- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 Dojo 1.7.2 中创建一个共享栏小部件,并使用 require()
有条件地将外部社交媒体 API 作为包加载,如下所示:
require({
packages:[
{name: "twitter-api", location: "https://platform.twitter.com", main: "widgets"}
]
},["twitter-api"], lang.hitch(this, function(){
// Do some social stuff with twitter API
}));
每当我可以访问 Twitter API 时,这都非常有效,但现在我正在通过专用网络测试它,我不能。问题不在于小部件无法正常工作。相反,我有一些额外的代码从 ready()
中运行,对于 domReady()
也是如此,在尝试加载这个包但加载失败后调用。
我对 Dojo 文档进行了一些挖掘以弄清楚为什么我的 ready 没有触发并遇到了这个推理(domReady):
Now comes along dojo/domReady!. The loader loads all the dependencies for dojo/domReady! and then demands the plugin resource be resolved. But dojo/domReady! may not be able to resolve the demanded plugin resource (an empty module ID which is intended to signal the DOM is ready) because the DOM may not be ready. The loader notices this an sees that the module was not capable of being loaded synchronously, gives up and continues.
This is an intentional limitation in the loader, since handling it would have required more complicated code. It will cease to be an issue for Dojo 2.0, when the synchronous loader is desupported.
根据我收集到的信息,只要无法加载依赖项,Dojo 就会停止尝试。这很好,但是是否有任何方法可以优雅地处理外部库不可用的情况?
我认为也许有一些方法可以通过 XHR 调用来完成,但这会导致跨源问题。我唯一的其他解决方案是将它们添加为单独的脚本标签,这是加载其他一些库的方式;但由于这个模块现在正在重构,我想尝试让它尽可能与 AMD 兼容。
最佳答案
你可以创建一个promise,当require成功的时候resolve它;并在 promise 的错误处理程序中优雅地失败:
require(["dojo/Deferred"], function(Deferred){
var d = new Deferred();
require(['twitter-api'], function(twitterApi){
d.resolve(twitterApi);
});
d.then(function(api){
// use api
}, function(err){
// fail gracefully
});
return d.promise;
});
关于javascript - 当外部包不可用并且仍然运行 domReady 时,有没有办法优雅地失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28074795/
嘿伙计们,我使用 jquery data() 方法来存储图像的宽度。 jquery什么时候可以获取图片的宽度。 on-dom-ready 还是 on-load?是否需要加载图像来查询其宽度,或者我也可
function(){} 会先用哪个触发? A) window.addEvent('domready', function(){}); B) window.addEvent('load', funct
什么是 dojo/domReady 插件? dojo/domReady 下有哪些方法? require(["dojo/_base/fx", "dojo/fx", "dojo/on", "dojo
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: What is the difference between these jQuery ready function
我正在查看用于跟踪 domready 事件的 jQuery 源代码,有一件事我不完全理解。如果脚本是动态包含的并且是异步加载的怎么办?这样,当脚本加载时,文档可能已经加载。 jQuery 唯一检查的地
我对 mootools 有点陌生,但我知道在 jQuery 中你可以拥有多个函数(在多个文件中): $(document).ready(function() { // put all your
我最近在 jsfiddle.net 上,我将其视为一个配置选项。这让我想到它可能有助于解决我遇到的问题: 我加载了多个图像(还没有升级到单个 Sprite ),所以在它们全部下载之前我无法使用我的控件
我有一个很烦人但可能很简单的问题,我就是想不通。 在 TypeScript 文件中,我定义了以下行: import test1 = require('domReady'); 这个“domReady”模
我有一个工作的 AngularJS 应用程序,并开始使用 RequireJS 来处理模块依赖关系。遵循本指南 - http://www.startersquad.com/blog/angularjs-
在我的应用程序中,当我使用 require (来自 RequireJS)时, domReady 事件会触发实际上是加载事件的事件(当所有图像、脚本等完成加载时)。这是预期的吗? 我有一堆使用 docu
有没有一种方法可以模拟 mootools“domready”事件而不需要完整的框架? 我想要一些 javascript 来装饰我的一些文本框,以便在 onload 事件之前运行,因为我在运行之前看到未
我正在 Dojo 1.7.2 中创建一个共享栏小部件,并使用 require() 有条件地将外部社交媒体 API 作为包加载,如下所示: require({ packages:[
我一直在使用 infoWindows,但由于希望更改 infoWindow 的布局,我正在尝试切换到 infoBubble。但是,domready 事件的执行方式与 infoWindow 不同。我是一
我是 jQuery 的新手(我是从 PHP 转向 JavaScript 的)。 我将多个 jQ 函数分组在单独的文件中。我有以下问题: 是否要求每个 jQ 函数都必须在里面准备好了吗? 如果我的文件中
我需要触发一个一次性的自定义事件,其功能类似于 domready 事件,因为如果在事件发生后添加新事件,它们会立即触发。 这是针对一些在初始化某些数据和资源之前无法执行的代码,所以我想做这样的事情:
我的脚本只有在每个脚本都加载完毕并且 DOM 准备就绪后才开始工作。我想为它编写一个功能测试。 我正在使用 Linux。我使用 Lotte 编写了一个测试、CoffeeScript 和 Phantom
我有以下 HTML 结构: page-wrapper就在里面标签,所以 min-height:100%在那里工作得很好,但是page-wrapper-inner不会跨越整个高度
由于将 javascript DOM 方法放在 html 页面的底部(在 之后)比使用 jQuery 的“就绪”事件要快得多,我们不应该强制这样做: $('document').trigger('re
我正在使用 backbone.js 创建单页应用程序。我是 backbone 的新手,所以请原谅任何错误的语义。 我的问题是渲染 View 时。 最初,我的 index.html 中有一个 javas
我想在元素可用时立即与 DOM 交互。我可以使用 setInterval 来完成此操作,但它不适用于 Crossrider,因为只有在 DOM 准备好后才会加载可以与 DOM 交互的 js。有办法解决
我是一名优秀的程序员,十分优秀!