1

我有一个在 WordPress 上运行的网站。该站点使用多个 JavaScript 组件。最值得注意的是主页上的幻灯片、日程安排联系表格。在 Chrome、Firefox 和其他优秀的浏览器中,所有功能都按预期工作,但在 IE 中则不然。

由于 JavaScript 中出现的问题,所有这些功能都会中断。我在下面包含了几个示例:

IE 调试控制台中的错误:“SCRIPT1006:预期:')' -modernizr.foundation.js?ver=3.4.2,第 4 行字符 94”

m.join(a";")(b||"")

服务器上的实际文件:

m.join(a+";")(b||"")

IE 调试控制台中的错误:“SCRIPT1006:预期:')' - jquery.js?ver=1.7.2,第 2 行字符 148”

d=f("<"">")

服务器上的实际文件:

d=f("<"+a+">")

它们都遵循这种缺失字符的模式(最常见的是“+”号)。对于在 Internet Explorer 中会导致此问题的原因,我完全感到困惑,如果知道发生了什么以及如何解决它,我会松一口气。

4

3 回答 3

3

这与您提供 .js 文件的方式有关。特别是你的modernizr,你带来如下:

<script type='text/javascript' src='http://rowbotfitness.com/wp-content/themes/businesspro/core/library/js/foundation/modernizr.foundation.js?ver=3.4.2'></script>

(顺便说一句,你有很多 JS 和 CSS 文件,如果你能将它们结合起来会更好,你的加载顺序也有点可疑,但这不是主要问题)

如果您只是访问 URL:

http://rowbotfitness.com/wp-content/themes/businesspro/core/library/js/foundation/modernizr.foundation.js

...在 Firefox 中,然后查看在您的 Firebug 控制台中弹出的错误,您会在 IE 中看到导致您悲痛的错误:

未声明纯文本文档的字符编码。如果文档包含 US-ASCII 范围之外的字符,则文档将在某些浏览器配置中呈现乱码。文件的字符编码需要在传输协议中声明或文件需要使用字节顺序标记作为编码签名。

不确定是什么为您生成了该 JS 文件(使用 ?ver=3.4.2),但您最好直接链接到 JS 文件,然后在您的网络服务器软件中设置正确的 MIME 类型。有关 StackOverflow 的讨论,请参见此处:

Javascript MIME 类型

于 2012-11-28T13:41:27.210 回答
0

对此有两个想法:

  • 编码不匹配!确定所有文件共享相同的编码并且它们与网络服务器假装提供的编码相匹配?

  • 确定没有可能包含 CariageReturn 或 LineFeed 的变量?来自数据库的这些影响可能会发生。这可能会扰乱您的源代码并导致像您上面提到的效果。

于 2012-11-28T13:38:32.057 回答
0

您的 HTML无效,这会导致意外行为。

第一个问题如下

<!-- an if list.. -->
<!--[if (gt IE 9)|!(IE)]><!--> <html class=""> <!--<![endif]-->
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US" xml:lang="en-US">

导致 2 个<html>元素,其中第二个元素甚至定义了与 DOCTYPE 不同的解析行为(因为意外的第二个标签意味着您现在处于怪癖中)。解决此问题后,其他错误消息应该更有意义。

Additionally you are not sending any charset data with the .js files, whilst the page does have a charset defined ( utf-8 ) and this may cause an encoding conflict.

于 2012-11-28T14:40:40.813 回答