javascript - getScript 本地加载而不是全局加载?

标签 javascript jquery ajax

据我所知,JQuery 的 getScript 函数使用名为“global eval”的函数在全局上下文中加载脚本文件。是否有特定的设置或方法来更改此设置,以便它改为在我调用它的函数中加载?

如果我执行以下代码名称返回未定义,因为它没有在本地上下文中加载脚本。

    function callscript(){
        var name='fred';
    getScript(abc.js);
    }

//abc.js:
alert(name);

最佳答案

我相信我已经找到了使用常规 JQuery ajax 调用的解决方案。诀窍是你将数据类型设置为“文本”,否则如果它的脚本或者如果使用 getScript 或替代 .get() 它将自动运行内部脚本并将其放置在全局上下文中。

 function abc(){
    var msg="ciao";
    $.ajax({
      url: 'themes/_default/system/message.js',
      success: function(data){
          eval(data);
      },
      dataType: "text"
    });
    }
    //message.js
(function() {
    alert(msg);
})();

这会像预期的那样提醒“ciao”:)

在任何人说什么之前,是的,我正在使用 eval,但在这种情况下它完全没问题。

关于javascript - getScript 本地加载而不是全局加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15048551/

相关文章:

javascript - jquery 验证和表单提交

php - jQuery live() 函数

javascript - 如何使用 Javascript 从 URL 插入动态 HTML?

javascript - AJAX 调用在服务器端执行的顺序与客户端调用的顺序不同

javascript - Jquery - 如何在使用empty()选择器后恢复默认值

javascript - 第一次单击后无法显示/隐藏以在菜单项上重复

javascript - 如何使用 jQuery 设置 .selectedIndex

javascript - 更改当前按钮元素的类

javascript - 检查一个元素是否包含超过 1 个类名

javascript - 页眉到 margin-top 的高度