Safari中的脚本执行问题

时间:2011-06-23 11:31:28

标签: javascript safari

我在除Safari之外的所有浏览器中都有一些功能有问题,我已将问题减少到此。

在我的页面中,我在body元素的末尾有以下脚本声明:

<script type="text/javascript" src="../../Scripts/jquery-1.5.1.min.js"></script>
<script type="text/javascript" src="../../Scripts/jquery-ui-1.8.11.min.js"></script>
<script type="text/javascript" src="../../Scripts/jquery.ui.autocomplete.html.js"></script>
<script type="text/javascript" src="../../Scripts/jquery.validate.min.js"></script>
<script type="text/javascript" src="../../Scripts/jquery.textchange.min.js"></script>
<script type="text/javascript" src="../../Scripts/jquery.reveal.js"></script>
<script type="text/javascript" src="../../Scripts/mainScript.js"></script>

然后在mainScript.js文件中,我输入了以下代码:

$(function () {
  alert("found");
});

在所有其他浏览器中,它会显示一个消息框,但在Safari中它什么都不做。

Safari的javascript调试器列出了脚本,并且可以看到内容,但由于某种原因它没有包含在内。

我发现这个问题,因为我试图从html页面内的内联脚本调用mainScript.js中的函数(内联脚本定义在mainScript.js定义下面),并且Safari调试器抱怨该函数不是在任何地方找到。

我在这里做错了什么,为什么Safari不包含这个脚本。包含所有jquery脚本,并且工作正常。

2 个答案:

答案 0 :(得分:1)

您的代码似乎很好。

我尝试使用此代码

<!DOCTYPE html>
<html>
    <head>
        <title>Test</title>
    </head>
    <body>
        <h1>Test</h1>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(function () {
                alert("Test");
            });
        </script>
    </body>
</html>

并且工作正常(Windows 7上的Safari 5.0.5 7533.21.1)。

几个问题:

  1. 您是否尝试过从错误控制台手动调用您的功能?它有用吗?
  2. 如果您在文档就绪功能之外放置一个简单的alert("Test.");,是否会显示?
  3. 如果从错误控制台调用jQuery的函数,你会得到什么?他们有效吗?

答案 1 :(得分:1)

问题出现在mainScript.js的其他地方。

{ class: 'someclass' }作为参数发送到某个方法,而class是保留字。

这可能也会在其他浏览器中出错,但他们很乐意忽略它并继续前进。

修复只是将其更改为{ 'class': 'someclass' }