首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Coding
V2EX  ›  程序员

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

  •  
  •   guoqiao · 2014-07-01 18:10:29 +08:00 · 3891 次点击
    这是一个创建于 1992 天前的主题,其中的信息可能已经有所发展或是发生改变。
    foo.js中的内容引用自某个第三方网站, 加载后它会针对当前dom执行一些操作.
    为便于理解, 你可以想象它里面就一行alert:

    alert('hello world!');

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

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

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

    有的时候以文件为单位思考问题容易被禁锢, 把函数放第一位就好多了, 怎样重新执行一段代码? 将其当到函数里面即可.
        8
    guoqiao   2014-07-03 06:20:43 +08:00
    @luoyou1014 他们的方法正是我想要的. 你说的这个方案不适合我的场景.
        9
    luoyou1014   2014-07-03 09:39:41 +08:00
    @guoqiao 那种使用方法是不提倡的, 能不用则不用.
        10
    rekey   2014-07-03 15:22:59 +08:00
    楼主可能需要考虑一个问题,之前做出的事情是否需要抹去。
        11
    guoqiao   2014-07-03 16:21:47 +08:00
    @rekey 是的,你说的对,确实出现了重复执行的问题, 我现在正在想办法解决.
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2315 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 21ms · UTC 08:23 · PVG 16:23 · LAX 00:23 · JFK 03:23
    ♥ Do have faith in what you're doing.