如何获取动态生成的iframe的src值

时间:2019-01-28 19:55:43

标签: javascript html iframe

我有一个可以在页面上创建包含内容的iframe的功能(我对此功能没有控制权,因为它也被远程拉出了)。 该函数生成:      <span id="myspan"></span>

一旦js函数完全加载,它就是:      <iframe id="myspan" src="https://google.de">

我的问题是,如何获得iframe的src。 所有使用.src的尝试,getElementById都失败,或者将我的“ undefined”指定为src值。对于正常设置的iframe,.src等可以正常运行。在此src上的onload也失败。 有什么想法吗?

我尝试过 <script>var iframeSrc = document.getElementById('#myspan').src;alert(iframeSrc);</script> 导致未定义。

3 个答案:

答案 0 :(得分:1)

尝试使用setInterval,它将在指定为第二个参数的间隔内运行指定为第一个参数的代码。在这种情况下,它会轮询以查看iframe是否每500毫秒存在一次。

找到iframe后,请确保使用clearInterval清除间隔,因为我们不再需要轮询。

var intervalId = setInterval(function() { 
    var iframe = document.getElementById('myspan');

    if (iframe) { 
        clearInterval(intervalId);

        var iframeSrc = iframe.src;
        alert(iframeSrc);
    }
}), 500);

希望这会有所帮助。

答案 1 :(得分:0)

尝试从文档中删除主题标签。getElementById(#id)

将其更改为此

var iframeSrc = document.getElementById('myspan').src;
alert(iframeSrc);

由于您已经在getElementById中声明了其ID,因此无需在其中添加井号。

脚本无法正常工作的另一个原因是,您可能在将iframe附加到dom之前尝试拉出src。

如果要检查dom并在添加iframe后等待运行某些脚本,可以执行以下操作:

var selector = document.getElementById('myspan');
var time = 400;

function waitForElementToDisplay(selector, time) {
        if(document.querySelector(selector)!=null) {
            alert("The element is displayed, you can put your code instead of this alert.")
            return;
        }
        else {
            setTimeout(function() {
                waitForElementToDisplay(selector, time);
             }, time);
         }

请确保编辑参数:选择器和时间,使其与您的代码匹配。

答案 2 :(得分:0)

投票成功,     <script>var existCondition = setInterval(function() { if (jQuery("iframe#myspan").length) { clearInterval(existCondition); var iframeSrc = jQuery("#myspan").attr("src");window.location.replace(iframeSrc) } }, 100);</script>