相关疑难解决方法(0)

JavaScript:undefined!== undefined?

注意:根据ECMAScript5.1,第15.1.1.3节,window.undefined是只读的.

  • 现代浏览器正确实现此功能 例如:Safari 5.1,Firefox 7,Chrome 20等.
  • 未定义仍然可以改变:Chrome 14,...

当我最近将Facebook ConnectTersus集成时,我最初收到错误消息,Invalid Enumeration ValueHandler already exists在尝试调用Facebook API函数时.

事实证明,问题的原因是

object.x === undefined
Run Code Online (Sandbox Code Playgroud)

当'object'中没有属性'x'时返回false.

我通过在两个Facebook函数中用常规相等替换严格相等来解决这个问题:

FB.Sys.isUndefined = function(o) { return o == undefined;};
FB.Sys.containsKey = function(d, key) { return d[key] != undefined;};
Run Code Online (Sandbox Code Playgroud)

这使得事情对我有用,但似乎暗示了Facebook的JavaScript代码和我自己的代码之间的某种冲突.

什么可能导致这个?

提示:这是有据可查的undefined == null同时undefined !== null.这不是问题.问题是我们如何得到undefined !== undefined.

javascript

65
推荐指数
5
解决办法
11万
查看次数

是否可以在加载jQuery之前预先注册处理程序?

jQuery是一个非常常见的场景之前加载jQuery 在页面后期加载但依赖于jQuery可用的javascript的情况,特别是如果你遵循更接近你的脚本的做法</body>.

所以基本上我想从这里开始:

<script>
  someFunctionThatUsesLateJQuery(){ [code that relies on jQuery] }
</script>

...

<script src="jquery.js"></script>
<script>
  $(function(){
    someFunctionThatUsesLateJQuery();
  });
</script>
Run Code Online (Sandbox Code Playgroud)

对于这样的事情:

<script>
  _$.ready(function(){ [code that relies on jQuery] });
</script>

...

<script src="jquery.js"></script>
Run Code Online (Sandbox Code Playgroud)

就像异步统计跟踪(álaGoogleAnalytics)一样,有没有什么可以让你注册javascript函数调用,一旦加载jQuery就可以执行,而不会遇到可怕的$ is undefined错误?

我的意思是在没有注册和取消注册超时/间隔的情况发生这种情况.

有没有/有没有可能在jQuery中添加某种预注册变量,它会在加载后识别和处理?

使用案例:

值得注意的是,我得到的具体用例是一个嵌入式JS小部件,我希望在<script>放置的场景中发生一些DOM操作,因此在jQuery加载之前有非常真实的可能性. jQuery加载的情况发生在附近</body>.

然后,我不想让用户进一步负担,要求他们在代码执行的正确位置注册一个特定的函数调用(这将取决于他们的实现)...我希望它"只是工作"

javascript jquery asynchronous

6
推荐指数
1
解决办法
924
查看次数

标签 统计

javascript ×2

asynchronous ×1

jquery ×1