6

就像在标题中一样。

我有两个文件:一个是 javascript 文件,一个是 css 文件。如果user-agent 是 iPad,我想加载这些文件 - 但仅当 user-agent 是iPad时。因此,仅当用户代理是 iPad 时才加载以下两行。我怎样才能做到这一点

<link rel="stylesheet" href="/c/dropkick.css" type="text/css"/>
<script src="/s/jquery.dropkick-1.0.0.js" type="text/javascript"></script>
4

2 回答 2

11
if (navigator.userAgent.match(/iPad/i) != null){ // may need changing?
  var js = document.createElement('script');
  js.type = "text/javascript";
  js.src = "/s/jquery.dropkick-1.0.0.js";

  var css = document.createElement('link');
  css.type = "text/css";
  css.rel = "stylesheet";
  css.href = "/c/dropkick.css";

  var h = document.getElementsByTagName('head')[0];
  h.appendChild(js);
  h.appendChild(css);
}

或者User-AgentiPad 标题中的任何内容。

参考:

于 2012-12-10T14:17:08.313 回答
2

您可以使用document.createElement来创建linkscript元素,然后将它们附加到文档中(例如,将它们附加到document.getElementsByTagName('head')[0]或类似的位置)。

SO上的这个答案表明您可以通过"ipad"在该navigator.userAgent字段中查找字符串来检测iPad。当然,用户代理字段可以被欺骗。

例如:

<script>
(function() {
    var elm, head;

    if (navigator.userAgent.indexOf("ipad") !== -1) {
        head = document.getElementsByTagName('head')[0] || document.body || document.documentElement;

        elm = document.createElement('link');
        elm.rel = "stylesheet";
        elm.href = "/c/dropkick.css";
        head.appendChild(elm);

        elm = document.createElement('script');
        elm.src = "/s/jquery.dropkick-1.0.0.js";
        head.appendChild(elm);
    }
})();
</script>

...但这是即兴的,未经测试的。

(请注意,没有理由将类型放在link或上script;在 的情况下link,类型来自响应的内容类型。在 的情况下script,默认值为 JavaScript。)

于 2012-12-10T14:16:25.427 回答