Document.ready在外部文件中?

Ric*_*ard 13 javascript jquery

我在HTML页面上引用JavaScript如下:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.js"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&amp;region=GB"></script>
<script type="text/javascript" src="js/shared.js"></script>
<script type="text/javascript">
$('document').ready(function() {   
    // In-page code: call some functions in shared.js
});
</script>
Run Code Online (Sandbox Code Playgroud)

shared.js中定义的函数不包含在内部$('document').ready.所以:

  1. 假设定义的函数shared.js可用于"页内代码"是否安全?

  2. 如果我将页内代码拉出到一个名为local.js(保持包装$('document').ready)的单独文件中,是否可以安全地假设定义的函数shared.js可用?

  3. 最后,事实是我没有在$('document').ready一个问题中包装shared.js 吗?我发现如果我将它包装起来,它的功能将不再适用于页内代码.

问题3的原因是我遇到了这个问题:Uncaught TypeError:Property ...不是函数 - 页面加载后

并想知道这是否与我如何组织我的代码有关.

更新:谢谢你的答案.现在很清楚,$('document').ready在shared.js 中使用会从全局范围中删除这些函数.但是,我只想澄清第3点中的原始问题.

如果我执行以下操作,我可以假设:

  • 在我的页内代码中,在里面加载$('document').ready,从shared.js调用一个函数
  • 将shared.js中的函数引用到我的页面上的jQuery,Google Maps或元素

会不会有问题?

换句话说,shared.js即使我没有将该文件中的所有内容包装在里面,是否可以安全地假设页面将在调用内部函数时加载$('document').ready

Ray*_*nos 25

假设shared.js中定义的函数可用于"页内代码"是否安全?

是的,只要这些功能被注入全球范围

如果我将页内代码拉出到一个名为local.js的单独文件中(将其保存在$('document').ready),是否可以安全地假设shared.js中定义的函数可用?

是的,只要local.jsshared.js AND shared.js将函数注入全局范围后包含.

最后,事实是我没有在$('document')中包装shared.js.准备好了吗?我发现如果我将它包装起来,它的功能将不再适用于页内代码.

包装函数document.ready将它们置于全局范围之外.

var foo = 4; // global
$(function() {
  var bar = 5; // local
});
foo = bar; // error
Run Code Online (Sandbox Code Playgroud)

您需要在全局范围内注入变量,这很简单

$(function() {
  /* all your code */

  window["SomeGlobalVariable"] = someFunctionIWantGlobal;
});
Run Code Online (Sandbox Code Playgroud)