JQuery新手,但想用它在后台预取html页面(大约四个@每个约4kb),但我不太确定我这样做是正确的。
下面是我想出来的代码:
$(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'应该照顾。
将感谢您的关注和建议。查询:
- 以上代码有效吗?如果不是,解决办法是什么?
- 我需要改变什么来限制选择器的范围为<头>…& lt;/head> section?头>
$(文档)时函数(){$ (' [rel =预取][href = . html]美元")each(函数(){Var my_url = $(this).attr('href'). ajax({美元url: my_url,数据类型:"文本",标题:{"X-Moz":"预取"}});});});
搞定了。问题是因为当我使用谷歌api链接到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"]')
限制选择器
我还删除了浏览器检测,并将其用于所有浏览器