在无法修改liferay配置的liferay 3.6旧版项目上进行工作,该项目可通过IE8 / 9访问,并试图从页面上的portlet加载/使用jQuery&UI,但无法正常工作。
尝试直接加载jQuery和UI,作为一个合并文件,并尝试从yepnope和require加载;看来文件加载正常(UI可以在调试器中看到加载)。例如:
<script>
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = "text/javascript";
script.src = "/pim/scripts/yepnope.js";
head.appendChild(script);
</script>
<script>
yepnope({
load: ["scripts/jquery-1.9.1.js", "scripts/jquery-ui-1.10.2.custom.js"],
callback: {
"jquery-1.9.1.js": function () {
console.log("jquery loaded!");
},
"jquery-ui-1.10.2.custom.js": function () {
console.log("jquery-ui loaded!");
}
}
});
</script>
安慰:
日志:jQuery已加载!
SCRIPT5009:“ jQuery”未定义
jquery-ui-1.10.2.custom.js,第6行字符1
到目前为止,无论我如何加载两个文件,都将得到JQuery未定义消息
关于如何使它起作用的任何指示?
最佳答案
终于让它起作用了。
1)保留将yepnope.js附加到头部的脚本
2)在页面的portlet之一中的脚本中,该脚本在portlet的加载期间被调用,出现:window.addEventListener(“ onload”,invokeLoad,false);
3)invokeLoad函数像问题的第二个脚本一样执行jQuery的yepnope加载。
请注意,它不适用于1.9.1版本,但适用于1.7.2版本