【问题标题】:How to invoke javascript function on web page from chrome extension? [duplicate]如何从 chrome 扩展程序调用网页上的 javascript 函数? [复制]
【发布时间】:2015-12-24 19:03:00
【问题描述】:

每个页面都有一个带有这个sn-p的网站:

var refreshSite; 
refreshSiteInterval();
function refreshSiteInterval() {
  refreshSite = setInterval(
    function() { document.location = document.location; }, 
    420000);
};
function stopRefreshSite() {
  clearInterval(refreshSite);
}

从 javascript 控制台调用 stopRefreshSite() 会阻止定时刷新发生。

我想使用 chrome 扩展来禁用此定期刷新。我认为每当页面加载时调用stopRefreshSite() 的内容脚本是有意义的,但由于内容脚本在孤立的世界中执行,这似乎是不可能的。

有什么方法可以调用网页函数吗?还是首先尝试阻止原始 javascript 运行是更好的策略?

【问题讨论】:

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


    【解决方案1】:

    要在页面上执行脚本,您必须在其中插入一个 script 元素,这很容易完成并包含在此答案中:Building a Chrome Extension - Inject code in a page using a Content script

    在你的情况下:

    var script = document.createElement('script');
    script.textContent = "stopRefreshSite()";
    (document.head||document.documentElement).appendChild(script);
    script.parentNode.removeChild(script);
    

    【讨论】:

    • ...虽然我看不出有任何理由选择document.head 而不是只使用document.documentElement
    • 我添加了带有 "run_at": "document_end" 的脚本,虽然脚本确实在运行,但我找不到注入的脚本元素。我开始调试了……
    • @DavidResnick:注意上面的最后一行。 :-) 我们在添加它之后将其删除,因为它正在添加运行它包含的代码的它。如果你愿意,你可以把这条线去掉。
    • 是的,看到那个我挠了挠头……;)非常感谢您的帮助!
    • @Legends:在现代浏览器今天上,是的。不在(比如说)IE11 上。我什至不确定 2015 年的支持情况。
    猜你喜欢
    • 2022-12-26
    • 2013-09-24
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    相关资源
    最近更新 更多