我想使用JQuery动态加载GWT生成的foo/foo/nocache.js
文件。某些浏览器未执行此foo/foo/nocache.js
文件。如果我通过使用GWT样式使用JQuery正常放置脚本,那么在页面加载后它会动态生成一个脚本(即..,jquery.onInjectDone('jquery'))。现在,如果我使用JQuery或javaScript创建此脚本标记,则它不会生成动态生成的脚本。
现在我如何确保使用jQuery执行foo/foo/nocache.js
?
代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
</script>
<script>
$(document).ready(function() {
$("#clickMe").click(function() {
// This /foo/foo.nocache.js which is generated by GWT compiler.
$.getScript("/foo/foo.nocache.js", function(data, textStatus, jqxhr) {
console.log(data); //data returned
console.log(textStatus); //success
console.log(jqxhr.status); //200
console.log('Load was performed.');
});
});
});
</script>
</head>
<body>
<h1>Web Application Starter Project</h1>
<a href="#" id="clickMe">clickMe</a>
<div id="name">
</div>
</body>
</html>
输出:
ReferenceError:未定义foo
答案 0 :(得分:2)
根据您使用的链接器,在文档创建完成后无法加载.nocache.js
脚本,因为它使用document.write
加载了相应的排列(请参阅IFrameTemplate.js#344和XSTemplate.js#279)。这会使您页面中的所有当前内容都被覆盖。
否则,如果选择xsiframe
链接器,则可以加载脚本,但用于计算置换位置的算法使用脚本标记或文档的位置,因此无法使用ajax但插入脚本标签。
$("#clickMe").click(function() {
$('body').append($("<script src=foo/foo.nocache.js />"));
}