我引用[https://github.com/olark/lightningjs]将js加载到单独的窗口名称空间中。
我已经测试了一个名为sample.js的脚本文件,如下所示,需要将其加载到单独的窗口名称空间中。
function testjs(){
console.log("sample");
}
我在HTML中包含lightningjs-embed.js和lightining-bootstrap.js。
<html>
<head>
<title>testing light js</title>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/lightningjs-master/lightningjs-embed.js" ></script>
<script type="text/javascript" src="js/lightningjs-master/lightningjs-bootstrap.js"></script>
<script type="text/javascript">/*{literal}<![CDATA[*/
/*** lightningjs-embed.min.js ***/
window.piratelib = lightningjs.require("piratelib","js/sample.js");
/*]]>{/literal}*/</script>
console.log("modules",lightningjs.modules);
piratelib("testjs");
在控制台中,我可以查看两个对象,一个为lightningjs,另一个为piratelib。我期望在调用piratelib(“ testjs”)之后在控制台中获得“样本”。但是我没有在控制台中得到样本。如果在控制台中尝试piratelib(“ testjs”),则会显示
function promiseFunction() {
console.log("promisdeId",promiseResponseId);
promiseFunction.id = promiseResponseId;
return modules[namespace].apply(promiseFunction, arguments)
}
而不是sample.js中的实际功能
function testjs(){
console.log("sample");
}
建议我一些想法,以在单独的window.namespace下加载js,以避免js冲突。请澄清我是否使用lightningjs以正确的方式调用函数。
提前致谢。
最佳答案
LightningJS处理的函数返回promises,因此:
piratelib("testjs").then(function(result) {
console.log(result);
}, function(error) {
// Handle your error
});