我正在尝试在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消息。为什么会这样?我需要在标题中加入一些文字来引用吗?
答案 0 :(得分:2)
编辑1:
误读了jQuery代码 - 这部分答案不适用:
<击> 有一些方法可以将Javascript文件添加到现有文档中,但它并不像您尝试的那样简单。
这个讨论可以解释:How to dynamically insert a <script> tag via jQuery after page load?
击>
另一种解决方案是将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文件,通过输入类似这样的内容来解决问题:
http://example.com/file.js
更改网站的网址和路径。此时,您仍然应该收到403
错误,但现在可以检查服务器日志以查看在那里写入的错误。
我找到了一个页面,提供了在此处跟踪403错误的指南:http://www.checkupdown.com/status/E403.html
((PS:如果我不得不随机猜出你收到403错误的原因,我会说你没有正确的路径文件file.js
。这取决于你的结构和各种包括,它可能是错误地计算相对路径。))
答案 1 :(得分:0)
传递给 click()的函数是一个回调函数,仅在单击该元素时执行。所以,是的,你已经有了这一部分。