我希望访问一个在<form>中加载这些表单的网页中的所有元素,

然后我在下面创建了这段代码,但不起作用。
当没有以iframe开头的页面时,已经可以正常工作了。
怎么解决这个问题?
manifest.json
{
"name": "Chrome webrequest test",
"version": "0.1",
"description": "A test for webrequest",
"manifest_version": 2,
"permissions": [
"tabs", "background", "activeTab", "<all_urls>", "webNavigation", "webRequest", "webRequestBlocking", "http://*/*", "https://*/*", "*://*/*"
],
"background": {
"scripts": ["background.js"],
"persistent": true
},
"browser_action": {
"default_icon": "img/flash128.png",
"default_title": "Chrome webrequest"
},
"icons" : {
"48" : "img/flash48.png"
}
}background.js
chrome.webRequest.onCompleted.addListener(
function OnWebRequestCompleted() {
chrome.tabs.executeScript(null, {
file: "Inject.js"
}, function() {});
}, {
urls: ["<all_urls>"],
types: ["main_frame"]
}, ["responseHeaders"]);Inject.js
var url = document.URL;
if (url.indexOf("site.com") != -1) {
var form = document.getElementsByTagName("form");
var btnclass = document.getElementsByClassName("btnClassName");
var inputField = document.getElementsByTagName('input');
for (var x = 0; x < form.length; x++) {
// document.body.addEventListener('DOMSubtreeModified', function() {
for (var i = 0; i < btnclass.length; i++) {
btnclass[i].addEventListener('click', function(e) {
for (var i = 0; i < inputField.length; i++) {
alert(inputField[i].value);
}
}, false);
}
// }, false);
}
}发布于 2018-07-19 21:18:45
你的iframe是另一份文件。在当前使用document.getElementsBy*的地方,您需要更改为
var iframe = document.getElementById('frameID');
var innerDoc = iframe.contentDocument
innerDoc.getElementsBy*...https://stackoverflow.com/questions/51431753
复制相似问题