【问题标题】:Global function is undefinded in scope of html loaded using jquery .load()全局函数在使用 jquery .load() 加载的 html 范围内未定义
【发布时间】:2021-10-31 23:52:15
【问题描述】:

我有 html :

<script src="/js/app.js"></script>

在 app.js 我有函数 foo:

function foo() { console.log("foo") }

然后我有 jquery 并使用它的方法 .load 来加载外部 html 内容:

$("#modal-wrapper").load("/modal_dialog_ajax", function () {
   // Some logic
});

/modal_dialog_ajax 的输出如下所示:

<div>Some markup</div>
<script type="text/javascript">
 foo();
</script>

Javascript 执行良好,但在此 html 范围内未定义 foo() 的调用。

为什么js里面ajax加载的html内容看不到页面上定义的全局函数?

【问题讨论】:

  • 如果app.js 中的foo 函数已在全局范围内定义,那么您所拥有的应该可以工作

标签: javascript html jquery ajax


【解决方案1】:

使用窗口全局对象解决此问题:

function foo() { console.log("foo") }
window.foo = foo;

然后称它为

window.foo();

但不确定这是一个好习惯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 2019-01-25
    • 1970-01-01
    • 2016-05-08
    相关资源
    最近更新 更多