Jquery选择器的有效性/范围
Jquery selector validity/scope
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"]')
限制选择器
我还删除了浏览器检测,并将其用于所有浏览器
相关文章:
- 正在全局范围中查找JavaScript函数
- 如何通过数组更新角度子范围
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- HTML范围:动态设置值属性
- "实例范围”;TypeScript类的getter/setter
- jquery日期选择器年份范围默认值
- Jpgraph:如何手动设置X轴和Y轴的范围
- 在对象数组中查找多个值的d3范围
- 动态加载angularjs并生成控制器和范围
- 如何通过谷歌应用程序脚本从谷歌文档中的位置确定命名范围
- 在Materialize Calendar中设置年份范围
- 在MVVM视图模型中处理应用程序范围的元素
- setInterval游戏循环的范围问题
- AngularJS获取范围中的选定项目
- 从指定范围创建字符数组
- ES6是否引入了一种机制来生成块范围的函数语句(而不是表达式)
- Angularjs无法将单选按钮与嵌套范围内的模型绑定
- ngDialog-弹出窗口未更新范围变量
- 如何使用D3生成特定范围内的随机颜色
- Jquery选择器的有效性/范围