什么应该是理想的后备方法?

时间:2013-08-07 07:58:19

标签: javascript ajax

如果启用了JavaScript,我正在使用Ajax调用特殊文件,如果禁用它,则会加载常规文件。

我的代码是这样的:

    window.onload = function() {
      document
        .getElementById("wrapper")
        .innerHTML = "<img src='cdn/img/demo/loading.gif'>";
      var x = null;
      if (window.XMLHttpRequest) {

        // code for IE7+, Firefox, Chrome, Opera, Safari

        var x = new XMLHttpRequest();
      } else if (window.ActiveXObject) {

        // code for IE6, IE5

        var x = new ActiveXObject('MSXML2.XMLHTTP.3.0');
      } else {
        // @TODO - Fallback
        // My Question : What should be an ideal Fallback method here?
      }
      x.open("GET", "js_enabled.php", true);
      x.send("");
      x.onreadystatechange = function() {
        if (x.readyState == 4) {
          if (x.status == 200)
            document.getElementById("wrapper").innerHTML = x.responseText;
          else
            document.getElementById("wrapper").innerHTML = "Error loading document";
        }
      }
    }

第一个块中理想的Fallback方法应该是什么?

更新 回退适用于浏览器。如您所见,这些命令适用于IE和普通浏览器。我想知道上帝是否禁止某些浏览器不理解那些2命令的蚂蚁呢?

2 个答案:

答案 0 :(得分:4)

如果JS可用,AJAX很可能是可用的,所以它不是你经常需要处理的东西,但如果你在AJAX不可用时寻找回退(我猜你是来自你的代码示例),那么唯一真正的方法是确保你的页面在没有它的情况下正常工作。

链接应该指向适当的页面(或者只是重新加载当前页面),然后用JS覆盖以使用AJAX(但仅当AJAX可用时)。这样,即使JS不可用,你也会有一个正常运行的网站,更不用说AJAX了。

根据包含AJAX支持的this site浏览器,为了让您了解在缺乏AJAX支持时问题有多小,包括以下内容:

  • Internet Explorer 5.0及更高版本
  • Opera 7.6及以上
  • Netscape 7.1及以上
  • Firefox 1.0及以上
  • Safari 1.2

正如你所看到的,那是一些非常古老的东西。

答案 1 :(得分:0)

如果javascript被禁用,你会感到困惑,那么就没有后备方法了。假设你的意思是启用/禁用javascript。

然后你要做的就是用默认文本填充区域并用js隐藏它。
所以如果JS没有启用,默认文本将显示给用户。
如果启用了js,默认文本几乎会在渲染后立即隐藏,然后你的ajax将会接管