所以我正在创建一个允许我渲染外页的页面,这样我就可以开始周期性地操作数据和刷新内容(理想情况下,不是这个内容)。
所以我的问题是我有一个小的javascript来调用页面加载到我的iframe,但是当我尝试将我的网址应用到我的iframe的src属性时,它似乎没有坚持,而且没有外页加载。我一直在使用我自己的网站对此进行测试,因此应该没有来自该网址的限制以防止加载。我不确定页面是否需要重新加载(可能?)iframe以更改其src?如果是这样,我的想法将是完全不可行的,所以我希望这不是问题。这是我到目前为止的代码:
<head>
<style>body{text-align:center;}#targetField{width:80%;margin:3px;}</style>
<script>
var frames = new Array();
var url;
function direct(url){
frames = document.getElementsByTagName('iframe');//Obtain all iframe elements
for(i=0;i<frames.length;i++){//For each frame
//IF the frames source element is blank or null
if(frames[i].getAttribute('src') === null || frames[i].getAttribute('src') === 'null' || frames[i].getAttribute('src') === ''){
frames[i].setAttribute('src', url);
}
else if(frames[i].getAttribute('src') === url){
//IF the souce element already has a target and is SAME as url
if(navigator.appName == 'Microsoft Internet Explorer'){
//If IE then use reload()
frames[i].contentWindow.location.reload(true);
}
else{
//Otherwise set source to reload
frames[i].src = frames[i].src
}
}
else{}
}
}
</script>
</head>
<body>
<form>
<input id="targetField"></input>
<button onclick="direct(document.getElementById('targetField').value);" value="submit">GO!!!</button>
</form>
<iframe id="iF01"></iframe></body></html>
如果可能的话,我宁愿使用纯javascript而不使用任何jQuery,我只是不确定为什么我的调试控制台没有显示任何问题,但什么也没做。在Chrome,FF和IE8中测试过。 JSFiddle http://jsfiddle.net/77tx44od/2/
我现在也试过这个,无济于事,创建一个新的iFrame来通过其src属性加载内容。
<script>
var frames = new Array();
var url;
var x = 0;
function direct(url){
frames = document.getElementsByTagName('iframe');//Obtain all iframe elements
for(i=0;i<frames.length;i++){//For each frame
frames[i].parentnode.removeChild(frames[i]);
}
var newFrame = document.createElement('iframe');
newFrame.setAttribute('src', url);
newFrame.setAttribute('id', 'iF'+x);
document.body.appendChild(newFrame);
x++;
}
</script>
答案 0 :(得分:1)
在加载了来自其他来源的页面后,您无法查询iframe中的内容,也无法根据跨源安全性更改其src。最好的办法是给iframe命名,然后再使用window.open(URL,iframeName)。
使用另一个src替换iframe是一个想法。
可能会阻止在iframe中加载页面 - 它很可能会尝试淘汰
以下是替换版本:
<form id="form1">
<input id="targetField"></input>
<button value="submit">GO!!!</button>
</form>
<div id="iframeDiv">
<iframe id="iF01"></iframe></div>
window.onload=function() {
document.getElementById("form1").onsubmit=function() {
document.getElementById("iframeDiv").innerHTML='<iframe src="'+this.targetField.value+'"></iframe>';
return false; // cancel form submission
}
}