Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GWT:如何确保在构建GWT页面后运行javascript_Java_Javascript_Jquery_Gwt - Fatal编程技术网

GWT:如何确保在构建GWT页面后运行javascript

GWT:如何确保在构建GWT页面后运行javascript,java,javascript,jquery,gwt,Java,Javascript,Jquery,Gwt,我有一个javascript文件main.js。main.js包含如下内容: $(document).ready(function() { Cufon.replace('#myform p.head', { fontFamily: 'HelveticaNeueLT Std Thin' }); ...... }); <body> <script type="text/javascript" src="js/main.js"></

我有一个javascript文件main.js。main.js包含如下内容:

$(document).ready(function() {
     Cufon.replace('#myform p.head', { fontFamily: 'HelveticaNeueLT Std Thin' });
     ......
});
  <body>
       <script type="text/javascript" src="js/main.js"></script>
  </body>
我想这样做的目的是在加载整个页面后运行此方法,并将更改应用于css元素

但我发现,只有在所有HTML元素之前加载脚本时,这才有效,例如:

 <body>
   HTML......
   <script type="text/javascript" src="js/main.js"></script>
 </body>

HTML。。。。。。
但是,如果将此脚本置于所有HTML之上,它将停止工作:

 <body>
   <script type="text/javascript" src="js/main.js"></script>
   HTML......
 </body>

HTML。。。。。。
这发生在静态HTML和GWT页面上。因为我的GWT总是将生成的HTML内容放在所有正文内容的末尾,所以脚本总是在HTML之前,因此不起作用。例如,我的GWT HTML模块如下所示:

$(document).ready(function() {
     Cufon.replace('#myform p.head', { fontFamily: 'HelveticaNeueLT Std Thin' });
     ......
});
  <body>
       <script type="text/javascript" src="js/main.js"></script>
  </body>

编译后,从my UIBinding生成的HTML将生成如下HTML页面:

  <body>
       <script type="text/javascript" src="js/main.js"></script>
       Generated HTML....
  </body>

生成的HTML。。。。
我的问题是:

  • 在GWT中是否有我可以指定生成的HTML的地方 在标记中的一些语句之间
  • 有没有其他办法代替美元(单据)。准备好了吗?我可以保证 它被称为页面加载中发生的最后一件事

  • 非常感谢

    ,但我觉得奇怪的是,当在静态页面(
    $(document)中向上移动脚本时,脚本不能按预期工作。ready(…)
    应该在运行传递给它的函数之前,等待到达
    ,即
    DOMContentLoaded
    ),这不是它不能与GWT应用程序一起工作的原因(换句话说,您的诊断是错误的)

    GWT的
    onModuleLoad
    也在
    DOMContentLoaded
    上运行(或更高版本,但从来没有更早),因此您的应用程序的
    onModuleLoad
    和jQuery的
    $(document.ready(…)
    之间可能存在竞争条件。您可以尝试将GWT应用程序的
    放在
    main.js
    之前,但由于
    onModuleLoad
    可能会在
    DOMContentLoader
    之后运行,因此无法保证它会工作(更不用说以交叉浏览器的方式)

    我认为您最好删除
    main.js
    或用一个简单的
    函数替换
    $(文档)。ready(…)
    ,并在适合您需要的时刻从GWT应用程序中调用
    Cufon
    (和/或在
    $(文档)中执行的任何操作)。ready(…)
    )(即,将
    #myform p.head
    元素/小部件附加到文档后)

    最简单的方法是将脚本放入JSNI方法中,然后在适当的情况下调用该方法。只需确保使用
    $wnd.Cufon
    而不是
    Cufon
    (对于所有其他全局变量也是如此),并将所有出现的
    文档
    替换为
    $doc
    窗口
    替换为
    $wnd


    虽然我觉得很奇怪,当在静态页面(
    $(document)中向上移动时,脚本不能按预期工作。ready(…)
    应该在运行传递给它的函数之前等待
    到达,也就是
    DOMContentLoaded
    ),但这并不是它不能与GWT应用程序一起工作的原因(换句话说,你的诊断是错误的)

    GWT的
    onModuleLoad
    也运行在
    DOMContentLoaded
    (或更高版本,但绝不更早)上,因此您的应用程序的
    onModuleLoad
    和jQuery的
    $(文档)之间可能存在竞争条件。就绪(…)
    。您可以尝试将GWT应用程序的
    放在
    main.js
    之前,但由于
    onModuleLoad
    可能在
    DOMContentLoader
    之后运行,因此无法保证它能正常工作(更不用说以交叉方式)

    我认为您最好删除
    main.js
    或用一个简单的
    函数替换
    $(文档)。ready(…)
    ,并在适合您需要的时刻从GWT应用程序中调用
    Cufon
    (和/或在
    $(文档)中执行的任何操作)。ready(…)
    )(即,将
    #myform p.head
    元素/小部件附加到文档后)

    最简单的方法是将脚本放入JSNI方法中,然后在适当的情况下调用该方法。只需确保使用
    $wnd.Cufon
    而不是
    Cufon
    (对于所有其他全局变量也是如此),并将所有出现的
    文档
    替换为
    $doc
    窗口
    替换为
    $wnd