我正在尝试修复我编写的书签,以跟踪单页应用程序中的URL更改,特别是在使用体式时记录时间表。它使用脚本加载器在init之前嵌入jQuery和KnockoutJS库。在KnockoutJS库初始化之后,我无法在全局范围内找到ko
对象,并且无法找出原因。要进行测试,请登录https://app.asana.com,打开Google Chrome开发人员工具的“控制台”标签,然后尝试以下代码:
var koScript=document.createElement('script');
koScript.type='text/javascript';
koScript.src='//ajax.aspnetcdn.com/ajax/knockout/knockout-3.0.0.js';
document.getElementsByTagName('head')[0].appendChild(koScript);
“网络”选项卡显示脚本下载。 “元素”选项卡将脚本显示为head元素的最后一个子元素。然而ko
仍未定义。
答案 0 :(得分:1)
简短版本是:
module.exports
和require
- 您可能从node.js知道的CommonJS标准。knockout.js
文件检查环境以确定是应该设置window.ko
还是使用module.exports
或AMD风格的define
。如果它检测到CommonJS样式require
,则会在exports
而不是全局ko
对象上设置属性。解决方法:
你可以先暂时“复制”要求:
_require = require; require = null
然后它应该按照您的期望设置window.ko
!