googlechrome-Javascript错误,webkit浏览器从iframe导航内容
google chrome - Javascript bug with webkit browser navigating content from an iframe
我们有一个适用于IE和Firefox浏览器的解决方案,您可以在下面演示,但如果您使用Chrome或Safari点击演示链接,内容将不断循环iframe源中的模板,这就是我需要您帮助解决Chrome/Safari问题的解决方案的地方。
我们需要一个解决方案,让我们的用户直接访问我们的iframe页面,当他们访问该页面时,它会用合适的iframe模板包装该页面。如上所述,该解决方案适用于IE/Firefox,但不适用于Chrome和Safari。
这两个页面的内容相同,但iframe模板不同。
例如,单击此链接会将用户带到Awards Recognition内容,它会将AMU模板包裹在同一页面上,并在URL后附加#AMUhttp://www.apus.edu/alumni/awards-recognition/index.htm#AMU
这是完全相同的内容,但由于#APU附加到URL,它将围绕同一页面包装APU模板http://www.apus.edu/alumni/awards-recognition/index.htm#APU
以下是父iframe上的javascript:http://www.apu.apus.edu/community/alumni/index.htm
<script type="text/javascript">
function gup( name ) {
name = name.replace(/['[]/,"'''[").replace(/[']]/,"''']");
var regexS = "[''?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
return "";
else
return results[1];
}
var ifSrc = gup("forward");
$(function(){
if(ifSrc)
$("#iframe").attr('src', ifSrc);
});
</script>
以下是源内容及其将要访问的页面的代码:http://www.apus.edu/alumni/awards-recognition/index.htm
<script type="text/javascript">
function fnGetDomain(url) {
if(url)
return url.match(/:'/'/(.[^/]+)/)[1];
else
return "";
}
var curDomain = fnGetDomain(document.referrer);
var curHash = document.location.hash.toLowerCase();
try { frameEl = window.frameElement; }
catch(e) { frameEl = 1; }
if(!frameEl) {
//if (frameElement == null) {
if(!curDomain) curDomain = "www.apu.apus.edu";
if(curHash == "#apu") curDomain = "www.apu.apus.edu";
else if(curHash == "#amu") curDomain = "www.amu.apus.edu";
//change location or close
window.location = "http://" + curDomain + "/community/alumni/index.htm?forward=" + document.location.href;
// or window.close();
}
</script>
如果(frameEl){
if ($.browser.webkit) {
if(top === self) frameEl = 0;
else frameEl = 1;
}
看起来修改iframe会导致$(document).ready()
一次又一次地启动。您是否尝试过将其从jQuery调用更改为文档就绪函数或立即函数?
<script type="text/javascript">
function gup( name ) {
name = name.replace(/['[]/,"'''[").replace(/[']]/,"''']");
var regexS = "[''?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
return "";
else
return results[1];
}
var ifSrc = gup("forward");
// edit: notice no $ in front, and () at the end.
(function(){
if(ifSrc) {
var iframe = document.getElementById('iframe');
iframe.src = ifSrc;
}
})();
</script>
把这个放在你的文档末尾,它应该会像你期望的那样工作。您可能想尝试的另一件事是,与其在document-ready上调用该函数,不如在#iframe
的ready函数上调用:
$('#iframe').ready(function(){
if(ifSrc)
$("#iframe").attr('src', ifSrc);
});
也许可以尝试:
if (top === self) {
frameEl = 1;
}
对于Chrome
- Windows 8高速监视器iframe导航
- 联合会话历史记录 使用 iframe 向后导航
- 每次 iframe 重新导航时执行操作.(JavaScript)
- 使用来自 iframe 的相对 url 跨域导航 parent.window
- 禁用 HTML 外部的 iframe 上的导航
- 如何防止 CasperJS 导航 iframe
- 如何强制iframe'的父页面,当用户在iframe中导航时自动滚动到顶部
- 书签&来自不同安全域的iFrame上的导航
- 使用Javascript来控制iFrame的导航,而不应用src属性
- 使用Javascript在iframe中导航URL
- 如何从iframe导航到另一个页面?
- 导航条不会在iFrame内保持静态
- Iframe重定向顶部框架导航到Iframe
- 使用自定义协议添加iframe会导致IE导航到iframe源
- 简易XDM - IFrame导航打破套接字
- jQuery移动导航条链接在Android上使用iframe时不起作用
- 防止IFrame导航
- 如何在浏览器中更改URL,由于导航在iframe
- 实现流畅的iFrame导航
- googlechrome-Javascript错误,webkit浏览器从iframe导航内容