我有一个在对话框而不是主窗口中打开页面的功能。清理后的代码如下:
var baseurl = window.location.origin + '/static/docs/'
function onClickLink(event) {
event.preventDefault();
if($("#dialog").length==0) {
setUpDialog()
}
var href = event.target.href;
href = baseurl + href.substring(1+href.lastIndexOf('/'));
$("#dialog").load(href + ' .body', function(response, status, xhr) {
if (status == "error") {
window.location = event.target.href;
} else {
changeImageSrc();
reStructure();
}
});
$("#dialog").dialog({
modal:true,
title:event.target.text,
width: 960,
position: ['center', 100]
});
}
此代码在Chrome中运行良好,但(状态==“错误”)在Firefox下执行。看起来Firefox有404错误,可能是加载页面的图像,或者类似的东西。
有关如何在Firefox下获取Chrome行为的任何想法吗? (你可以找到一个有效的example here)
答案 0 :(得分:10)
在FireFox中,window.location.origin为undefined
。因此FireFox厌倦了获取页面:
http://openerp.co.hu/hu/funkcionalis-bemutato/undefined/static/docs/sales.html
并失败
在chrome中,window.location.origin http://openerp.co.hu
。 Chrome绑定以获取页面:
http://openerp.co.hu/static/docs/sales.html
并成功
不要依赖window.location.origin
,请尝试使用:
window.location.protocol + "//" + window.location.host
答案 1 :(得分:1)
why firefox doesn't support window.location.origin(这不是标准的)
有时你需要这个而不是之前选择的答案:
var $window_location_origin = window.location.protocol+'//'+window.location.host;
我需要获得window.location.origin
又名window.location.protocol+'//'+window.location.host
的长度。简单地用后者替换前者是行不通的。
window.location.protocol+'//'+window.location.host.length
将返回类似http://25
的内容,这是协议,最后连接window.location.host
的长度。
我通过制作变量来解决这个问题,如下所示:
var $window_location_origin = window.location.protocol+'//'+window.location.host;
在那之后,我可以获得$window_location_origin
的长度,即原始的25 {window.location.host.length
)加上window.location.protocol+'//'
的7,给我所需的32。
答案 2 :(得分:0)
特别是错误消息?另外,使用以下代码更新您的代码:
var baseurl = window.location.origin + '/static/docs/';
function onClickLink(event) {
event.preventDefault();
if($("#dialog").length==0) {
setUpDialog();
}
var href = event.target.href;
href = baseurl + href.substring(1+href.lastIndexOf('/'));
$("#dialog").load(href + ' .body', function(response, status, xhr) {
if (status == "error") {
window.location = event.target.href;
} else {
changeImageSrc();
reStructure();
}
});
$("#dialog").dialog({
modal:true,
title:event.target.text,
width: 960,
position: ['center', 100]
});
}
答案 3 :(得分:0)
404表示“找不到页面”。
设置断点并检查导致问题的URL。这真的有效吗?
当涉及到URL中的非法字符时,Chrome可能比Firefox或类似的东西更宽松。尝试将网址粘贴到两个浏览器的位置栏中,以查看您获得的内容。