- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这并不像听起来那么基础,所以在您阅读并理解我正在尝试做的事情之前,请不要跳到回答 :-)。
我有一个名为 SineMacula
的对象,它包含一些像这样的基本函数(暂时忽略 ready
函数):
(function(global, $){
// MOST CODE STRIPT OUT HERE */
/**
* Sine Macula Run
* Makes it easy to write plugins for the Sine Macula library
*
* @param function callback
*/
SM.run = run;
function run(callback){
// Call the function with the Sine Macula
// and jQuery objects
callback(SM, $);
}
/**
* Sine Macula Ready
* Executes code once the Sine Macula and jQuery
* libraries are ready
*
* @param function callback
*/
SM.ready = ready;
function ready(callback){
// Call the function with the Sine Macula
// and jQuery objects
jQuery(function($) {
callback(SM, $);
});
}
/**
* Sine Macula Load
* Load the Sine Macula Libraries and Plugins
* into the current document
*
* The options:
* - package: the package of libraries to load
* - packageURL: a remote source to load the package details from
* - libraries: any additional libraries to load
*
* @param object parameter The options for the Sine Macula load
*/
SM.load = load;
function load(options){
// BUILD A QUERY HERE
// ...
// Complete the url by appending the query
url = '//libraries.sinemaculammviii.com/'+query;
// Append the script tag to the end of the document
script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
$('head')[0].appendChild(script);
}
})(this, this.jQuery);
load()
函数通过将相关脚本标记附加到页面的 head
来简单地加载页面的所有相关插件/库。
加载页面中的所有脚本都作为对名为 run
的函数的回调运行。这确保 jQuery
和 SineMacula
都传递给插件。
这就是问题所在,因为正在将库加载到 SineMacula
对象中,因此无法检测它们是否已加载。
例如,如果其中一个库包含名为 setDate()
的函数插件,我运行:
SM.setDate()
这不一定有效,因为 setDate()
函数可能尚未加载到 SineMacula
对象中,因此它将返回“未捕获的类型错误... '.
有人可以建议对 SineMacula.ready()
函数进行很好的改编以检测库是否存在吗?
请不要对 jQuery.load()
函数提出建议,我很清楚这一点。
除非绝对必要,否则我不希望解决方案是函数 load()
的回调。
我希望这是有道理的,如果没有让我知道,我会发布更多信息。希望尽可能简短。
提前致谢
更新
忘了说我有一个测试页面here您可以在哪里看到我遇到的错误并更好地理解我在做什么 :-)
最佳答案
如果我理解正确,是用户从他们的脚本中调用 SM.run()
,然后调用 SM.load()
,加载其他部分图书馆的。
因此,如果是这种情况,那么无论如何,他们的脚本都会在加载库的任何其他部分之前完成执行。
我认为您需要做的是要求用户将他们的 .run()
放在与其余代码分开的单独脚本中。然后您可以使用 document.write
加载其他脚本。这将导致他们加载并阻止下一个脚本,该脚本将包含用户代码的其余部分:
function load(options){
// BUILD A QUERY HERE
// ...
// Complete the url by appending the query
document.write('<scr' + 'ipt type="text/javascript" ',
' src="//libraries.sinemaculammviii.com/' + query,
'"><\/scr' + 'ipt>');
}
<script type="text/javascript" src="/path/to/your/lib.js"></script>
<script type="text/javascript">
SineMacula.load('all');
</script>
<!-- The document.write will write the new script here, and it will be loaded
syncronously, so it will block. -->
<script type="text/javascript">
// code that uses the loaded library parts
</script>
关于javascript - 延迟脚本运行,直到所有 Assets 都已加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13500229/
我在我的应用程序中使用rails 4 和 ruby 1.9.3 以及fancybox2-rails gem,但是 Assets 管道存在一个普遍问题。如果我运行 rake task 进行预编译,那
我把我所有的 Assets 都放在我的包里例如myBundle/Resources/public/css/ 然后像这样加载它们: {% block stylesheets %} {{ parent()
我正在创建RoR-6应用程序,并从此行的application.html.erb文件中引发以下错误: javascript_include_tag 'application', 'data-turbo
我正在对 Play Subproject 功能进行更多扩展测试,如下所述:http://www.playframework.com/documentation/2.0/SBTSubProjects .
我是 symfony 2 和 Assetic 的新手。我想在 CSS 中使用 assetic 和 Sass。我使用自定义字体。我在资源下的包中创建文件夹“assets/css”,里面有 _base.s
这是我的目录结构(这只是一个测试项目): stan@mypc:/generate_assets$ sudo tree -L 3 -p . ├── [drwxr-xr-x] assets │ └─
我使用 node.js connect/express。 有人知道支持 TypeScript 源代码即时编译和缩小的 Assets 管理器吗? 知道如何以编程方式调用编译器吗? 我一直在使用 conn
因此,我们在 Assets 管道摘要方面遇到了一个小问题,因为我们有许多 HTML 模板作为 Assets (对于 AngularJS),并且我们使用 asset_path 在 Javascript
我想从iPad的照片库中获取图像URL。 当我尝试从Image Piicker的信息中获取 UIImagePickerControllerReferenceURL 时 我将URL设为: assets
我正在使用带有Assetic的Symfony 2.1.10版,并且在上次 Composer 更新之后,当我尝试运行php app/console assetic:dump时出现以下错误 Dumping
我的 Assets 管道有问题,我已经有一个名为 Assets 的资源/ Controller 。所以我已将 assets.prefix 选项更改为“/externals”。 config.asset
更新到 Expo sdk 34 后,出现此错误:TypeError:Asset.fromModule 不是函数。 (在“Asset.fromModule(image)”中,“Asset.fromMod
将 Play 框架项目从 2.2.4 迁移到 2.3.8 后遇到问题: 这是运行命令“activatorcompile”的错误输出: [error] ...\workspace\testproject
我在将 Google Analytics 添加到我的 Rails 4 应用程序时遇到了一些困难(参见 this post)。 我通过在 /public/assets/google-analytics.
我正在使用 Symfony2 和 Assetic。最近我一直在做很多 CSS 工作,所以在某个时候我需要命令 $ php app/console assetic:dump --env=prod --n
我正在 Android 开发中迈出第一步,并遇到了 Assets 一词。 据我了解, Assets 只是一个未被解析或引用为资源的文件。 这个词有更准确的定义吗?我应该在哪些情况下在我的应用程序中使用
我添加了 danial-farid--angular-file-upload通过 Rails Assets 将库添加到我的 Rails 4 应用程序。主库加载正常,但 sprockets 找不到它包含
这是我的代码,尽管编码非常粗糙: public void loadStack(AssetManager manager, String path) { String[] lis
我正在使用 Assets 管理我的 Symfony 2 框架中的 CSS 文件。它在生产模式下运行良好。 我的问题是在 Debug模式下,assetic 不断将我的文件合并为一个输出文件。这使得跟踪特
我想以编程方式从重复的相册中删除 Assets (照片不是)。我可以使用照片框架删除相册 我想知道如何从相册中删除 Assets 而不从照片应用中完全删除它。我想在多个地方使用它,例如将 Assets
我是一名优秀的程序员,十分优秀!