Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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降级-外部源文件_Javascript_Ajax_Jquery - Fatal编程技术网

优雅的Javascript降级-外部源文件

优雅的Javascript降级-外部源文件,javascript,ajax,jquery,Javascript,Ajax,Jquery,对于精通JS的程序员来说,这是一个简单的问题 我正在构建一个Wordpress站点,它使用jQueryAjax方法,在单击顶部导航链接时重新加载我的整个内容区域,或者在单击侧栏导航链接时重新加载我的主要内容区域。我想确保只有当用户的浏览器支持JavaScript时才会发出AJAX调用。我在这里和其他网站上找到了一些参考资料,这些资料说,通过外部引用我的脚本,一个未配备JavaScript的浏览器将忽略所有JS文件。这准确吗?我考虑过使用php: $my_arr = get_browser(nul

对于精通JS的程序员来说,这是一个简单的问题

我正在构建一个Wordpress站点,它使用jQueryAjax方法,在单击顶部导航链接时重新加载我的整个内容区域,或者在单击侧栏导航链接时重新加载我的主要内容区域。我想确保只有当用户的浏览器支持JavaScript时才会发出AJAX调用。我在这里和其他网站上找到了一些参考资料,这些资料说,通过外部引用我的脚本,一个未配备JavaScript的浏览器将忽略所有JS文件。这准确吗?我考虑过使用php:

$my_arr = get_browser(null,true);if $my_arr['javascript'] == 1 {
  echo '<script type="text/javascript" src="path/to/script"';
}
$my\u arr=get\u浏览器(null,true);如果$my_arr['javascript']==1{

echo'是的,如果用户的浏览器不支持JS或禁用了JS,脚本标记基本上会被忽略。不管怎样,包含它们都没有坏处,你只需为它们未被利用时发生的情况制定网站计划


就AJAX与页面重新加载而言,您只需将您的站点编码为没有AJAX,即所有链接都应具有适当的
href
属性,指向它们应该去的地方。如果启用了JS,您可以通过其
onclick
处理程序将AJAX附加到链接上,并通过返回
false
来阻止默认操作m处理单击事件的任何函数。

这里有一个简单的模式,可以使用回退到非ajax链接进行不引人注目的ajax导航

在HTML中:

<a class="ajaxnav" href="page.html">Text</a>

如果不支持javascript,脚本将不运行,剩下的是带有有效HREF的标准web锚。如果支持javascript,脚本将替换所有“ajaxnav”使用ajax点击处理程序进行链接处理。非常简单。

如果浏览器不支持javascript,它将不会读取javascript。我想不出有什么理由避免包含它。非常感谢,请在回答时指出。使用onclick with return false与jQuery相比有什么优点/缺点。点击(e)事件处理程序与e.preventDefault?它们在功能上是等价的。我并不是想实际执行类似于
onclick=“someAJAXFunction();”
,而是笼统地说。
    function ajxnOff(list, ajxnCode, wrapper, container) {
        jQuery(list).click(function(e) {
            e.preventDefault();

            var $lnkGoz = jQuery(this).attr("href");

            var $lnkGozAjx = $lnkGoz + '?ajxy=' + ajxnCode;
            var $ajxyContainer = wrapper;
            var $ajxyCurThing = container;

            $ajxyCurThing.fadeOut(400, function() {
                    $ajxyContainer.html('<div id="loaderA"></div>');
                    jQuery("div#loaderA").fadeIn(400);
                    jQuery.ajax({
                        url: $lnkGozAjx,
                        success: function(data) {
                                jQuery("div#loaderA").delay(2000).fadeOut(400, function() {
                                    $ajxyContainer.html(data);
                                    jQuery("div.ajxn").fadeIn(400);
                                    jQuery.remove("div#loaderA");
                                });
                        }
                    });

            });
        });
    }

    jQuery(document).ready(function() {
        ajxnOff(jQuery("ul#topNavList a"), 1, jQuery("div#contentWrapper"), jQuery("div#contentContainer"));
        ajxnOff(jQuery("ul#sidebarNavList a"), 2, jQuery("div#contentGrid"), jQuery("div#contentPageContainer"))
    }); 
<a class="ajaxnav" href="page.html">Text</a>
$(".ajaxnav").click(function(event) {
  event.preventDefault();
  // do ajax nav here; 
  // URL is in event.currentTarget.href, modify it however necessary
});