出于某种原因,我的网站无法在Google Chrome中运行。它在Firefox中完美运行,没有特殊错误,但在Chrome中是禁忌。是什么给了什么?
<德尔> http://www.lemaineofficial.com/ 德尔>
(它表示发生了错误,我可以尝试重新加载。但是它总是会产生同样的错误)
我的javascript想要执行的那一刻(它会短暂加载网站),Chrome就会中止该页面。我从来没有见过像这样的错误,也不知道如何排除故障,除非删除功能直到它起作用,我将尝试这样做。
我只需要知道使用javascript在Chrome上导致此行为的原因,或者知道如何轻松排除故障。
注意:此网站可以正常使用Firefox而不会崩溃。
此错误并不一定意味着它是由于进一步检查后的javascript。我可以认为我并不是唯一一个出现此错误的人,但有人可以查看该网站吗?谢谢你的理论。如果我对此更加明智,我会更新。
这里的某些内容似乎会导致问题,但每个定义的值都是必需的
body.visitor_mode div#content {
/* Outruled cause */
-webkit-column-gap: 5vw;
-moz-column-gap: 5vw;
column-gap: 5vw;
-webkit-column-width: 45vw;
-moz-column-width: 45vw;
column-width: 45vw;
}
这里有没有导致Chrome崩溃的内容?
我现在已经为我解决了这个问题。这是因为使用了column-gap
和column-width
以及Chrome似乎不喜欢的单位vw
。我在javascript中重新设置了这种行为,而不是在Simons回答中给出的。
目前我唯一缺少的是“.width()
中的column-width
正确。”Firefox为我提供了实际宽度,而Chrome只给了我column-width
值。感谢Simons编辑,我设法得到了一个很好的解决方案。但是,我使用了css transition
,这使得offset().left
不可靠。还有其他方法可以获得该值吗?
答案 0 :(得分:5)
问题似乎是iframe /page/story
中css的一部分。
当您将-webkit-column-gap
中的单位从vw
更改为px
(或完全删除它)时,它会完全混乱iframe的布局,但不会再使浏览器标签崩溃。< / p>
我认为这是Chrome渲染引擎中的一个错误,它会破坏vw
css属性中的新column-gap
单元。
如果你想要一个简单的两列布局我建议使用两个div
<div style="width: 50%; float: left;"></div>
修改强>
一种可能的方法是使用像素值使用javascript更改css值。
function onResize() {
var width = 0.45 * $(window).width();
var gap = 0.05 * $(window).width();
$("#content")
.css("-webkit-column-width", width + "px")
.css("-webkit-column-gap", gap + "px");
}
$(function() {
if (/webkit/.test(navigator.userAgent.toLowerCase())) {
$(window).resize(onResize);
onResize();
}
});
第二次修改
要获取包含列的div的宽度,可以插入
<span id="endmarker"></span>
然后使用$("#endmarker").position().left + columnWidth
获取左侧位置,这是所有列的总宽度。当内容完全匹配(文本上方或下方没有像素空间)为两列时,有一种特殊情况,无论出于何种原因,跨度似乎都会移动到第一列。
第3次修改
我在第二次编辑中发现了问题的解决方案,如果在标记范围(<span id="endmarker"> </span>
)中添加空格,问题似乎就消失了。
答案 1 :(得分:2)
看起来它可能与您的hashchange事件有关。在StackOverflow上有一篇文章,其他人在使用它时遇到了麻烦,可能值得一读:$(window).hashchange() doesn't work
我建议发表评论
$(function() {
$(window).trigger('hashchange');
});
并查看页面是否正确加载,然后从那里开始工作。
关于浏览器兼容性,我发现此网站很有用:http://caniuse.com/#search=hash
答案 2 :(得分:2)
在由iframe加载的Story.html文件中,你在body中有一些样式定义,将它移到head section :)(这不是问题,它看起来很糟糕)
同样在相同的样式定义中
body.visitor_mode div #content
将其更改为
body.visitor_mode div.content
(你在代码btw:P中使用)
这解决了我的Chrome上的问题(版本30.0.1599.66 @ 64bit Linux from Google Repo:P) - 页面已成功加载
答案 3 :(得分:1)
好的,所以这是我迄今为止的调查结果
在Mac上进行所有测试
Chrome:显示与您相同的错误 FireFox:工作,但非常滞后(i7处理器,8gig RAM和SSD),这不应该发生 Safari:崩溃。
当我检查safari的崩溃日志时,我得到了导致它的部分的堆栈跟踪:
0 com.apple.WebCore 0x00007fff8bf08384 WebCore::RenderBlock::calcColumnWidth() + 260
1 com.apple.WebCore 0x00007fff8c89c9e7 WebCore::RenderBlock::recomputeLogicalWidth() + 119
2 com.apple.WebCore 0x00007fff8bf072eb WebCore::RenderBlock::layoutBlock(bool, int) + 139
3 com.apple.WebCore 0x00007fff8bf06f84 WebCore::RenderBlock::layout() + 52
4 com.apple.WebCore 0x00007fff8bf166d9 WebCore::RenderBlock::layoutPositionedObjects(bool) + 441
5 com.apple.WebCore 0x00007fff8bf07a98 WebCore::RenderBlock::layoutBlock(bool, int) + 2104
6 com.apple.WebCore 0x00007fff8bf06f84 WebCore::RenderBlock::layout() + 52
7 com.apple.WebCore 0x00007fff8bf06ed7 WebCore::RenderView::layout() + 759
8 com.apple.WebCore 0x00007fff8bf063b6 WebCore::FrameView::layout(bool) + 1702
9 com.apple.WebCore 0x00007fff8bf05c65 WebCore::Document::updateLayoutIgnorePendingStylesheets() + 133
10 com.apple.WebCore 0x00007fff8c0c2d72 WebCore::Element::offsetHeight() + 18
11 com.apple.WebCore 0x00007fff8c0c2d4d WebCore::jsElementOffsetHeight(JSC::ExecState*, JSC::JSValue, JSC::Identifier const&) + 13
所以这是一个与WebKit相关的崩溃,与渲染视图有关,我建议你查看你的代码,然后开始删除部分直到它工作。
我的第一个建议是删除大量的文字:
Brödtextomombordevarahär! Brödtextombordevarahär!
看看是否有帮助,你也必须减少背景图片的大小,它们是巨大的,如果它们不会因为内存问题而杀死大多数浏览器,它们会占用大量的带宽。
答案 4 :(得分:0)
我知道它很奇怪,但有时候饼干会导致这个问题,它对我有用。删除所有Cookie,然后重试。
答案 5 :(得分:0)
你的图像非常大(2048x1152),你有4个。
首先尝试使用较小的图片,然后查看Chrome是否可以处理。
您还应该定量图像。 检测分辨率并发送较小的图像(如果不必显示较大的图像)。 (我的FireFox也崩溃了(24.0))
答案 6 :(得分:0)
首先,我尝试在服务器上评论你的五个javascript引用。这不是太多的工作。看看你是否得到了生病的文件夹图标。
如果没有显示生病文件夹,请重新添加一个。再次将其拉入Chrome中。继续此过程,直到找到断点。
然后,报告你的发现。
答案 7 :(得分:0)
我不知道这是否有帮助,但我能够在chrome开发人员工具窗口中看到错误。
为了看到这个: 1.打开一个新选项卡 2.按F12打开开发工具 3.导航到网站 4.单击黑色弹出窗口中的X,表示目标已崩溃 5.单击“控制台”选项卡。