我想实现一个JavaScript,修改从另一个域this is the site加载iframe
的输入字段的内容。
难点:
setTimeout()
来确保jQuery可用。iframe
时,唯一Permission denied to access property 'document'
从另一个域加载,导致iframe.contentWindow.document
。脚本:
// ==UserScript==
// @name ah.nl
// @include http://www.ah.nl/over-ah/services/mobiel/*
// @include https://ezpay.liquix.eu/WebReloadSolution/*
// @grant none
// @namespace http://www.example.com/gmscripts/
// ==/UserScript==
document.domain= 'ah.nl';
if (self === top) {
setTimeout(function() {
try {
$('iframe').load(function() {
console.log("Start " + this.src);
var inputs = $('input', this.contentDocument);
console.log("Got " + inputs.length);
// Below does not work:
//inputs.find('#orderForm\\:msisdnConfirm, #orderForm\\:msisdn').val('1234567890');
});
} catch(e) {
console.log(e);
}
}, 1000);
}
产地:
Start https://ezpay.liquix.eu/WebReloadSolution/index.jsp?merchant=ahnl&language=nl&mode=reload&productCode=1
Got 1
有一个元素的原因是在顶层文档中找到了<input>
元素。
有人能提供有效的Greasemonkey解决方案吗?
FF 43.0.1,Greasemonkey v3.8。