将脚本附加到window.width和window.resize上

时间:2013-07-12 09:38:27

标签: javascript jquery mobile window append

我需要的是在window.width> = 768时附加脚本,否则,如果window.width是< 768则附加另一个脚本。

这是我的初始脚本,它实际上有效:

function appendScript(stickname){

    var head = document.getElementsByTagName("head")[0]; var js = document.createElement("script");
    js.type = "text/javascript"; js.src = "site/js/" + stickname + ".js";
    head.appendChild(js); 
    }

    if ($(window).width() >= 768) { appendScript("stick");}
    else {appendScript("stick-mobile")}

这有效,但它当然不适用于窗口调整大小。例如,当您将浏览器窗口缩小到768px宽时,您必须点击刷新才能使脚本再次运行..更糟糕的是:例如,如果您使用的是小型平板电脑,则在切换时不会切换脚本取向。

我试过这个:

function appendScript(stickname){

    var head = document.getElementsByTagName("head")[0]; var js = document.createElement("script");
    js.type = "text/javascript"; js.src = "site/js/" + stickname + ".js";
    head.appendChild(js); 
    }
    $(window).resize(function() {
    if ($(window).width() >= 768) { appendScript("stick");}
    else {appendScript("stick-mobile")}
    });

仅在最初调整浏览器大小时才有效。这当然是不可接受的。 有人可以帮忙吗?非常感谢你!

2 个答案:

答案 0 :(得分:0)

你能告诉我这个代码是放在javascript标签中吗?

function appendScript(stickname){
  var head = document.getElementsByTagName("head")[0];
  var js = document.createElement("script");
  js.type = "text/javascript";
  js.src = "site/js/" + stickname + ".js";
  head.appendChild(js); 
}

(function(){

  if ($(window).width() >= 768) { appendScript("stick");}
  else {appendScript("stick-mobile")}

  $(window).resize(function() {
    if ($(window).width() >= 768) { appendScript("stick");}
    else {appendScript("stick-mobile")}
  });

})();

只是一个问题:在appendScript()中,你不应该删除以前的脚本中的孩子(...)吗?为此,在脚本元素上添加一个类来区分它们?

答案 1 :(得分:0)

没有人回答,但这可能对其他人有帮助,一位朋友帮我解决了这个脚本,这似乎有效(即使萤火虫表现得很奇怪)

window.onload = windowload;
    window.onresize = AppendScript;

    function windowload() {
        AppendScript();
    }


    function AppendScript() {

        if (window.innerWidth >= 768) {
            Include('site/js/stick.js', 'on')
            Include('site/js/stick-mobile.js', 'off')
        }
        else {
            Include('site/js/stick.js', 'off')
            Include('site/js/stick-mobile.js', 'on')
        }
    }

    function Include(filename, status) {
        var head = document.getElementsByTagName('head')[0];
        if (status == 'on') {
            script = document.createElement('script');
            script.src = filename;
            script.type = 'text/javascript';
            head.appendChild(script)
        }
        else if (status == 'off') {
            var scripts = head.getElementsByTagName('script');
            if (scripts.length > 0) {
                head.removeChild(scripts[1]);
            }
        }
    }