Google Chrome扩展程序 - 如何在加载页面后执行代码?

时间:2016-11-21 00:13:49

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

我试图创建一个扩展来自动执行某些任务。我尝试加载页面,然后在页面加载后执行代码,但我找不到正确的方法。

custom.js:

<!DOCTYPE html>
<html>
 <head>  
 </head>
 <body>
  <button id="btn"> BTN </button>
  <script src="custom.js">
  </script>
 </body>
</html>

的index.html:

function doMath() {
    var var1;
    var var2;
    var num;
 for(var x =1; x <= 3; x++){ //use x++ instead of x = x + 1 (easier to read) 
    if (x == 1) { //fix here
    var num = prompt("Enter first number please");
    var1 = parseInt(num)
    } else if (x == 2) { //and here
    var num = prompt("Enter second number please");
    var2 = parseInt(num)
    } else {
    var num = prompt("Enter third number please");
    var3 = parseInt(num) 

    }
  }

    return Math.min(var1, var2, var3);
}
document.write(doMath());

4 个答案:

答案 0 :(得分:1)

要跟踪新页面并在其上运行任何逻辑,一个解决方案可能是在内容脚本文件中添加此逻辑,该文件在 document_end 加载,每次您使用window.location导航到任何页面,此逻辑将运行。 您可以添加一些条件以确保逻辑在所需的页面/元素上运行。

我清楚了吗?

答案 1 :(得分:1)

您可以使用Content Scripts

来自文档的示例:如果网址与模式匹配,您需要修改manifest.json以允许扩展程序自动为网站注入一些javascript。

{
  "name": "My extension",
  ...
  "content_scripts": [
    {
      "matches": ["http://www.google.com/*"],
      "js": ["myscript.js", "myscript2.js"]
    }
  ],
  ...
}

您还可以定义run_at属性以控制何时注入js中的文件。它可以是&#34; document_start&#34;,&#34; document_end&#34;,或&#34; document_idle&#34;。

答案 2 :(得分:0)

我不确定我是否理解得很好,但如果我理解得好,这应该有用。

document.addEventListener("DOMContentLoaded",yourFunctionGoesHere)

答案 3 :(得分:0)

尝试使用chrome.tabs.onUpdated.addListener检查页面是否已完全加载,其状态等于“已完成”#。

使用此SO thread中提供的代码示例:

chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
  if (changeInfo.status == 'complete') {

    // execute some codes here

  }
})