具有跨域iframe的页面的Greasemonkey脚本

时间:2016-07-24 19:49:57

标签: javascript cross-domain greasemonkey

我想实现一个JavaScript,修改从另一个域this is the site加载iframe的输入字段的内容。

难点:

  • 不知怎的,jQuery加载了延迟,所以我不得不使用setTimeout()来确保jQuery可用。
  • 当我尝试使用this post中的iframe时,唯一Permission denied to access property 'document'从另一个域加载,导致iframe.contentWindow.document
  • 我尝试应用this post中提供的跨域技术,但它不起作用。
  • 元素的ID包含分号,因此应使用来自this post的建议。

脚本:

// ==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。

0 个答案:

没有答案