2

处理 liferay 3.6 遗留项目,无法修改 liferay 配置,通过 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 未定义消息

关于我如何让它工作的任何指示?

4

1 回答 1

0

终于让这个工作了。

1) 保留将 yepnope.js 附加到 head 的脚本

2) 在加载portlet 期间调用的页面portlet 中的一个脚本中,出现:window.addEventListener("onload", invokeLoad, false);

3) invokeLoad 函数执行 jQuery 的 yepnope 加载,就像问题中的第二个脚本一样。

应该注意,它不适用于版本 1.9.1,但适用于 1.7.2

于 2013-05-02T18:50:57.240 回答