Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery选择器有效性/范围_Javascript_Jquery_Jquery Selectors_Javascript Framework - Fatal编程技术网

Javascript Jquery选择器有效性/范围

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({

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”应该处理这些脚本

我们将非常感谢您的关注和建议。查询如下:

  • 上面的代码有效吗?如果不是,解决办法是什么
  • 要将选择器的范围限制在… $(文档).ready(函数(){ $('[rel=prefetch][href$=.html]') .each(函数({ var my_url=$(this.attr('href')) $.ajax({ url:my_url, 数据类型:“文本”, 标题:{'X-Moz':'prefetch'} }); }); });
    让它工作起来。问题是,当我使用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"]')