加载iframe的内容后,如何立即运行函数?

时间:2019-07-03 15:44:54

标签: javascript html iframe

我当前正在使用:

function printThing(){ 
    let link = parent.document.getElementById("oLink").href; 
    console.log(link); 
}

if (window.attachEvent) {window.attachEvent("onload", printThing);} 
else if (window.addEventListener) {window.addEventListener("load", printThing, false);} 
else {document.addEventListener("load", printThing, false);}

要从iframe的内容(使用srcdoc而不是src)获取链接,并在控制台中进行打印。将此代码发送到前端之前,将被添加到一些存储的html中。

是否有一种方法可以在iframe内容加载后触发此操作(即,无需等待应用程序中的其他内容)?我尝试将所有window替换为document,但是它不起作用(什么也不做)。

我需要从iframe中访问元素并更改其属性。

1 个答案:

答案 0 :(得分:1)

HTML

一旦加载了框架的内容,此方法仅使用onload属性来调用该函数。

<iframe id="some_frame" onload="on_iframe_load(this)">
    ....
</iframe>

很显然,请确保on_iframe_load(_this)函数在您的JS代码中。 为了进一步说明为什么我们将this传递到on_iframe_load()中,请理解从DOM元素传递this会将引用传递给该元素。

<script>
var on_iframe_load(_this) = () => {
    _this.contentDocument.getElementById("something_in_this_frame").doWhatever(...);
}
</script>

纯JS

如果HTML没有使您的船浮起,则可以使用onloadaddEventListener("load", ...),然后使用元素指针和{{1 }}(没有IE吗?)

iframe