单击后,我的内容脚本中的文档是相同的(Chrome扩展程序)

时间:2018-05-14 07:29:09

标签: javascript google-chrome-extension

即使我点击随机的document.URL链接,我的内容脚本<a href也始终具有相同的价值。

在内容脚本的下面的函数中,我有一个名为performclick()的函数,它在当前文档中找到一个随机链接,然后单击它。

现在不应该在我下次调用performclick()时,我会得到另一个document对象吗?即当前关注的活动标签的文档?

就像当我点击主页面上的链接并打开一个新的标签页面,其中加载了另一个网站时,我需要内容脚本给我这个点击的网站的新标签document加载链接。

但有些我总是不断获取同一主页的document对象。 请帮忙

清单

{
"manifest_version": 2,
"name": "OSP Updater",
"version": "1.0.0",
"content_scripts": [{
    "run_at": "document_start",
    "js": ["content.js"],
    "matches": [ "<all_urls>" ]
}],
"permissions": [
"background", "webRequest", "webRequestBlocking", "tabs", "<all_urls>"
],
"background": {
"scripts": ["background.js"],
"persistent": true
},
"web_accessible_resources": ["jsui.js"]
}

内容脚本

window.onload = function () {
var elm = document.getElementById("my-container");
if (elm != undefined && elm != null) {
    //alert("Main Page LOADED!!!");        
}
}
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
if (request.clickit == "yes") {
    performclick();
}    
});
function performclick() { 
//document.URL is always the same  
var links = document.querySelectorAll("a");
if (links.length) {
    var linkToClick = links[1];
    var clickEvent = document.createEvent('MouseEvents');

    clickEvent.initEvent('click', true, true);
    linkToClick.dispatchEvent(clickEvent);        
}
}

更新#1:

愚蠢的我,事实证明我是通过第一个标签从后台脚本向我的内容脚本发送消息。

我在后台脚本中做了点击决定,而不是向内容脚本发送信号,以便内容脚本可以进行实际点击。

因为我从后台脚本向第一个标签中的内容脚本发送消息,所以它导致document对象始终属于第一个标签(即主页)。

希望这有助于某人,总是检查你是否正在做消息,然后检查它的逻辑。

0 个答案:

没有答案