JQuery的新手,但想用它来预取背景中的html页面(大约4个@约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'应该处理。
将欣赏一些关于此的建议和建议。查询是:
答案 0 :(得分:0)
$(document).ready(function() { $('[rel=prefetch][href$=.html]') .each(function() { var my_url = $(this).attr('href') $.ajax({ url: my_url, dataType: 'text', headers:{'X-Moz': 'prefetch'} }); }); });
答案 1 :(得分:0)
搞定了。问题是因为当我使用google 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"]')
限制选择器。
我还删除了浏览器检测,并将其用于所有浏览器。