即使我点击随机的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
对象始终属于第一个标签(即主页)。
希望这有助于某人,总是检查你是否正在做消息,然后检查它的逻辑。