<script src="path/to/foo.js"></script>, 如何用 js 触发 foo.js 中的代码重新执行?

2014-07-01 18:10:29 +08:00
 guoqiao
foo.js中的内容引用自某个第三方网站, 加载后它会针对当前dom执行一些操作.
为便于理解, 你可以想象它里面就一行alert:

alert('hello world!');

在dom第一次完整加载的时候, 很显然这行alert会执行.
现在我的问题是, dom加载已经完成后, 如何通过js重新触发foo.js中的代码?
4750 次点击
所在节点    程序员
11 条回复
lichao
2014-07-01 18:12:01 +08:00
document.write('<script src="path/to/foo.js"></script>')
jsonline
2014-07-01 18:13:25 +08:00
1楼是对的,你只能再次加载一遍。
guoqiao
2014-07-01 18:18:30 +08:00
@lichao
@jsonline
谢谢. 貌似这个答案可以实现我的需求. 不过只能用document.write这种方式才能触发吗? 有没有更好点的方法.
mcfog
2014-07-01 18:23:14 +08:00
用 document.createElement('script') 创建节点后插入dom树内
Tonni
2014-07-01 19:01:49 +08:00
再次将脚本填充到dom节点
sanddudu
2014-07-01 19:11:40 +08:00
我第一眼以为是来测试 XSS 的
知乎也有这样的问题,然后被 XSS
luoyou1014
2014-07-02 19:27:56 +08:00
楼上说的方法操作起来感觉比较别扭啊, 我说个简单的.

把foo.js里面所有的内容全部写到一个函数里面, 然后在foo.js最下面加一句函数调用.

别的地方就可以重复调用了.

有的时候以文件为单位思考问题容易被禁锢, 把函数放第一位就好多了, 怎样重新执行一段代码? 将其当到函数里面即可.
guoqiao
2014-07-03 06:20:43 +08:00
@luoyou1014 他们的方法正是我想要的. 你说的这个方案不适合我的场景.
luoyou1014
2014-07-03 09:39:41 +08:00
@guoqiao 那种使用方法是不提倡的, 能不用则不用.
rekey
2014-07-03 15:22:59 +08:00
楼主可能需要考虑一个问题,之前做出的事情是否需要抹去。
guoqiao
2014-07-03 16:21:47 +08:00
@rekey 是的,你说的对,确实出现了重复执行的问题, 我现在正在想办法解决.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/120455

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX