Javascript Jquery选择器有效性/范围
JQuery是新手,但我想用它在后台预取html页面(每个页面大约4@大约4kb),但我不太确定我是否做对了 以下是我提出的代码:Javascript Jquery选择器有效性/范围,javascript,jquery,jquery-selectors,javascript-framework,Javascript,Jquery,Jquery Selectors,Javascript Framework,JQuery是新手,但我想用它在后台预取html页面(每个页面大约4@大约4kb),但我不太确定我是否做对了 以下是我提出的代码: $(document).ready(function() { var my_url; $('[rel=prefetch][href$=.html]') .each(function() { my_url = $(this).attr('href') $.ajax({
$(document).ready(function() {
var my_url;
$('[rel=prefetch][href$=.html]')
.each(function() {
my_url = $(this).attr('href')
$.ajax({
url: my_url,
dataType: 'text',
headers:{'X-Moz': 'prefetch'}
});
});
});
基本上,我在文档的头部有一些带有“rel=prefetch”的链接,上面的代码片段是在浏览器不是Firefox时插入的。当检测到“X-Moz:prefetch”头时,我的应用程序呈现不同的内容,因此根据需要将其发送到此处
代码应该只获取html和缓存,而不处理脚本,我认为“dataType:text”应该处理这些脚本
我们将非常感谢您的关注和建议。查询如下:
让它工作起来。问题是,当我使用GoogleAPI链接到jquery时,jquery代码段没有运行。当我直接从我的站点提供服务时,在这种情况下,所有的js都被合并到一个文件中,它就工作了 我在Safari中使用开发工具时注意到了这一点 完整代码为:
(function ($) {
$(document).ready(function() {
var this_browser, my_url;
// Prefetch pages for non Firefox browsers
this_browser = new Browser();
if ( this_browser.getBrowserName() != this_browser.BROWSER_FIREFOX ) {
// Asynchronously prefetch html as text strings
// I.E., do not process scripts in incoming html
// See: http://ernstdehaan.blogspot.com/2009/08/prefetching-files-using-jquery.html
$('link[rel="prefetch"][href$=".html"]')
.each(function() {
my_url = $(this).attr('href');
$.ajax({
url: my_url,
dataType: 'text',
headers: {'X-Moz': 'prefetch'}
});
});
}
});
}(jQuery));
Safari提醒我“(jQuery)”位正在生成错误
事实证明,这是因为代码是在加载JQuery之前触发的
也忘了提那件事
$('head link[rel="prefetch"][href$=".html"]')
限制选择器
我还删除了浏览器检测,只对所有浏览器使用它。对此不确定。。。看起来唯一的更改是在循环的每个过程中重新定义my_url变量。有没有关于将作用域限制在头部的建议?注意到“my_url”变量之前显示在错误的位置。现在修复了这个问题,以显示它的实际位置。为了清晰起见,我不得不修剪一些元素,这导致我以前在错误的位置显示它。
$('head link[rel="prefetch"][href$=".html"]')