【问题标题】:How to run content script every time [duplicate]如何每次运行内容脚本[重复]
【发布时间】:2015-10-04 23:57:12
【问题描述】:

美好的一天,
我对只加载一次的谷歌浏览器扩展有这个问题。
例如,我与soundcloud有关。我加载页面,扩展现在正在工作,但是当我单击“相关曲目”中的某些歌曲时,我想再次加载扩展。当我刷新页面时,它可以工作,但是当我点击页面上的某些歌曲时,它不会再次加载。
我的猜测是页面没有“完全刷新”,但只有部分 DOM 发生了变化,所以这可能是内容脚本不再运行的原因。
提前谢谢你

【问题讨论】:

  • msny 其他问题已经涵盖了这一点。其他问题还包括通过 pushState 检测 url 何时更改

标签: javascript jquery google-chrome google-chrome-extension soundcloud


【解决方案1】:

当页面没有刷新时,为了让你的内容脚本起作用,你必须定义它的触发器。

很可能,您想使用点击事件来执行需要您操作的特定操作。将代码的相关部分包装在一个函数中,并使用您的相关事件触发代码。一般示例:

function myMainFunction(){
    // Whatever happens on load or click...
}

// Register to run on load:
$(myMainFunction);

// Register to run when an element with id "triggerElement#" is clicked:
$("#triggerElement1").click(myMainFunction);
$("#triggerElement2").click(myMainFunction);
// ...

第二个选项(如果相关)是定期运行您的脚本:

// Set to run every 5 seconds (5000 ms):
setTimeout(myMainFunction, 5000);

在这种情况下,请远离非常小的值,因为这会产生负载。另请注意,这本质上是一个无限循环,因此请远离内存泄漏。


来源:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    相关资源
    最近更新 更多