我想访问iFrame中的元素,但由于调用iFrame的方式,我没有成功。
这是目标页面(www1.k9webprotection.com/…)。
iframe在不同的子域上:
<iframe src="http://license.k9webprotection.com/..." ...></iframe>
为加载iframe时设置超时或事件侦听器没有帮助。
这两个文档都放在不同的(子)域上,默认情况下它们不能通过javascript进行交互。
必须将两个文档的domain
设置为相同的值。
将其放在两页的<head/>
中的某个位置:
<script type="text/javascript">
document.domain='k9webprotection.com'
</script>
然后等待iframe的onload
-事件,您应该能够从父页面访问iframe内的文档(反之亦然)。
GreaseMonkey的示例脚本(简单地覆盖iframe的主体):
// ==UserScript==
// @name k9
// @namespace k9
// @include http://www1.k9webprotection.com/get-k9-web-protection-free
// @include http://license.k9webprotection.com/license.jsp*
// @version 1
// @grant none
// ==/UserScript==
document.domain= 'k9webprotection.com';
if(self===top){
try{
$('iframe.getk9iframe').load(function(){
$('body',this.contentDocument)
.text('gotcha')
.css({background:'red',fontSize:'3em'});
});
alert("I'm the document in the top-window");
}
catch(e){}
}