我有一个可以在页面上创建包含内容的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>
导致未定义。
答案 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>