使用getElementsByTagName运行包含document.write的脚本

时间:2013-08-29 01:24:23

标签: javascript responsive-design append

我有一个脚本,我想在我的页面上使用document.writeln。

例如

    document.writeln('myjs');

当我实现像这样的代码时

    <script src="http://www.example.com/js/script_v1.js"></script>

没有问题。

但是我正在做一个重复模板,所以根据屏幕宽度,我想运行不同版本的文件。

如果我尝试像下面那样实现它它出现在头部但似乎没有运行代码?

    <script type="text/javascript">
        if(aaa)  {
            myvar=2;
        }
        else {
            myvar=1;
        }

    loader = document.createElement('script');
    loader.src = "http://www.example.com/js/script_v" + myvar + ".js";
    document.getElementsByTagName('head')[0].appendChild(loader);
    </script>

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:1)

您的脚本将被异步加载,因此您无法使用write()或writeln(),因为文档已关闭。加载它同步,所以:

document.write("<script src='http://www.example.com/js/script_v" + myvar + ".js'></script>");

然而,这不是一个好习惯,尽量避免编写方法。

答案 1 :(得分:0)

是否定义了aaa?这应该有用。

查看您的控制台,看看是否有任何错误。

http://codepen.io/granttimmerman/pen/vErnG

如果你拉起控制台,你会看到

GET http://www.example.com/js/script_v2.js 404 (Not Found) 

此外,您可能希望以这种方式创建脚本元素(取决于您的doctype)。

  var fileref = document.createElement('script')
  fileref.setAttribute('type', 'text/javascript')
  fileref.setAttribute('src', filename)