• 请不要在回答技术问题时复制粘贴 AI 生成的内容
guoqiao
V2EX  ›  程序员

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

  •  
  •   guoqiao · Jul 1, 2014 · 5305 views
    This topic created in 4380 days ago, the information mentioned may be changed or developed.
    foo.js中的内容引用自某个第三方网站, 加载后它会针对当前dom执行一些操作.
    为便于理解, 你可以想象它里面就一行alert:

    alert('hello world!');

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

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

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

    有的时候以文件为单位思考问题容易被禁锢, 把函数放第一位就好多了, 怎样重新执行一段代码? 将其当到函数里面即可.
    guoqiao
        8
    guoqiao  
    OP
       Jul 3, 2014
    @luoyou1014 他们的方法正是我想要的. 你说的这个方案不适合我的场景.
    luoyou1014
        9
    luoyou1014  
       Jul 3, 2014
    @guoqiao 那种使用方法是不提倡的, 能不用则不用.
    rekey
        10
    rekey  
       Jul 3, 2014
    楼主可能需要考虑一个问题,之前做出的事情是否需要抹去。
    guoqiao
        11
    guoqiao  
    OP
       Jul 3, 2014
    @rekey 是的,你说的对,确实出现了重复执行的问题, 我现在正在想办法解决.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5527 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 07:21 · PVG 15:21 · LAX 00:21 · JFK 03:21
    ♥ Do have faith in what you're doing.