0

我正在尝试在 jquery 点击事件后加载在线托管的 .js 文件。首先,我这样做对吗?只有在单击链接后才会应用所有 javascript 吗?

$(document).ready(function() {
            var clickHandler ="file.js";
    $('a').click(function() {
        $.getScript(clickHandler, function(data, textStatus, jqxhr) {
        console.log(data);
        console.log(textStatus);
        console.log(jqxhr.status);
    });
});

编辑:我刚刚检查了控制台,它正在加载文件,但给了我一个 403 Forbidden 消息。为什么会这样?我是否需要在标题中包含一些文本以供参考?

4

2 回答 2

2

编辑1:

误读了 jQuery 代码——这部分答案不适用:

有多种方法可以将 Javascript 文件添加到现有文档中,但这并不像您尝试做的那么简单。

这个讨论可以解释:如何在页面加载后通过 jQuery 动态插入 <script> 标签?

另一种解决方案是将 Javascript 的内容放入其自己的函数中,将其正常包含在页面上,然后在您的click处理程序中运行该函数。

编辑:扩展答案

假设您有一些相当简单的代码,file.js如下所示:

var el = document.getElementById("fooz");
if (el) {
  el.className += " example";
}

由于它没有被封装在一个函数中,因此该代码将在加载后立即运行(或尝试运行)。每次加载时它只会运行一次。

但是,如果将其包装在一个函数中,如下所示:

function colorFooz() {
  var el = document.getElementById("fooz");
  if (el) {
    el.className += " example";
  }
}

然后代码在调用函数之前不会运行。它将加载并准备好稍后调用。

错误 403

首先要做的是弄清楚为什么要获取error 403.

Javascript在这个阶段,这与jQuery或无关AJAX。通过尝试直接在浏览器中加载该 Javascript 文件来解决问题,方法是在您的 URL 中输入类似这样的内容:

http://example.com/file.js

当然,将 URL 更改为您的网站和路径。此时,您应该仍然收到403错误消息,但您现在可以检查服务器日志以查看其中写入的错误。

我在这里找到了一个页面,该页面提供了跟踪 403 错误的指南:http: //www.checkupdown.com/status/E403.html

((PS:如果我不得不随机猜测您收到 403 错误的原因,我会说您的路径文件不file.js正确。根据您的结构和各种包含,它可能正在计算相对路径不正确。))

于 2012-11-12T03:39:26.193 回答
0

您传递给click()的函数是一个回调,并且仅在单击元素时执行。所以,是的,你说得对。

于 2012-11-12T03:38:08.890 回答