2

我正在创建一个 chrome 扩展。它有一个浏览器动作。单击该按钮时,将运行一个 javascript 文件。该文件创建一个新选项卡。在该选项卡中,有 div。我试图操纵他们的内容。重新表述这个问题:如何在第一次单击按钮时让它工作。(注意:如果我单击按钮然后刷新页面,则该版本的代码将有效,直到我更改代码然后再次刷新页面。)

从 Chrome 的帮助页面中,我发现:

// 通过监听文档上的 // 事件,在 DOM 完全加载后添加事件监听器DOMContentLoaded,并在它触发时将监听器添加到 // 特定元素。document.addEventListener('DOMContentLoaded', function () { document.querySelector('button').addEventListener('click', clickHandler); });

http://developer.chrome.com/extensions/contentSecurityPolicy.html

清单中的 Javascript 文件:

chrome.browserAction.onClicked.addListener(function(tab) {

//This is to put the manager one tab to the right
var myIndex = tab.index;
chrome.tabs.create({index : myIndex + 1, url: "newTab.html"});

新标签.html

<script type="text/javascript" src="jquery.min-1.8.2.js"></script>
<script type="text/javascript" src="functionality02.js"></script>
<html><head>
<title>Title</title>

</head><body>
<div id='try'></div>

</body></html>

功能02.js

function letsTryThis2(){

$("#try").append("<div>Some Content.</div>");
}

document.addEventListener('DOMContentLoaded', letsTryThis2);
4

2 回答 2

2
function letsTryThis2(){
    $("#try").append("<div>Some Content.</div>");
}
$(window).load(function () {
  letsTryThis2();
});

编辑: 作为我评论的(坏)替代品,你可以试试这个:

    function letsTryThis2(){
        $("#try").append("<div>Some Content.</div>");
    }
$(function(){
    setTimeout(function(){
        letsTryThis2();
    },2000);
});
于 2012-10-28T20:43:22.100 回答
1

Chrome 扩展加载到浏览器中,就像网站上的 JavaScript 加载到页面上一样。如果更改源代码,最坏的情况是需要重新加载应用程序,最好的情况是刷新页面。

Chrome 扩展程序不是为实时更改而设计的,因为这效率低下,并且只有您(开发人员)会受到影响。

你看到的行为是完全正常的。该脚本在您加载时嵌入在页面中。要重新加载修改后的源,您必须重新加载页面以便再次应用它。考虑到您的用户永远不会遇到这个问题,除非他们是 Chrome 黑客并且玩弄代码,在这种情况下,他们可能知道刷新页面。;)

于 2012-10-28T23:07:47.060 回答