0

我是 jquery 的新手。我正在尝试在 Java 的 HTML 页面中附加 Jquery。要包含 jquery.js 文件,我编写了以下代码:

scriptTag += "var script = document.createElement('script');" + 
"script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'; " +
"script.type = 'text/javascript'; " +
"document.getElementsByTagName('head')[0].appendChild(script);" +

然后我附加了以下 js+jquery 代码

"var script2 = document.createElement('script'); window.onload = function() {" +
"$(document).ready(function() {" +
"$(\"#identity\").hide();});};" +
"script2.type = 'text/javascript'; " +
"document.getElementsByTagName('head')[0].appendChild(script2);";

所以基本上我想写这个:

var script = document.createElement('script');
script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'; 
script.type = 'text/javascript'; 
document.getElementsByTagName('head')[0].appendChild(script);
var script2 = document.createElement('script');
 window.onload = function() {
   $(document).ready(function() {
      $("#identity").hide();
   });
  };
script2.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script2);

我想要做的是在窗口加载后我想要我的功能。不知何故,单独写作$(document).ready(function() { 是行不通的。我收到一个未定义 $ 的错误(看起来 jquery.js 还没有准备好)。

为了避免这个问题,我使用了window.onload = function() {. 但现在我收到错误:$(document).ready is not a function. 我真的很困惑如何写这个东西。这是正确的方法吗?非常感谢任何帮助/指导。

[编辑]

请注意,以下代码(没有 jquery)可以正常工作:

window.onload = function() {
document.getElementById('identity').style.visibility='hidden';
};

[编辑]

实际上我正在制作一个网络代理,在那里我下载页面并为它们提供自定义外观和字段。这些页面不包含任何 jquery 文件,我也不能包含或编写 HTML。我只能使用 java 等动态添加我的 Js。

4

2 回答 2

1

下面是一些代码,展示了如何动态加载脚本文件并延迟调用 $(document).ready 直到加载该文件:

http://jqfaq.com/how-to-load-java-script-files-dynamically/

于 2012-07-02T10:49:22.710 回答
1

用于加载 jquery.min.js 文件的代码被异步调用。在您尝试执行 jquery 函数时,可能尚未加载此文件。因此,您应该确保使用回调函数加载文件。

在以下链接中,您可以找到有关如何执行此操作的示例:http: //blog.logiclabz.com/javascript/dynamically-loading-javascript-file-with-callback-event-handlers.aspx

这里还有一个工作示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>index</title>
    <script type="text/javascript">

        function loadScript(sScriptSrc, callbackfunction) {
            //gets document head element
            var oHead = document.getElementsByTagName('head')[0];
            if (oHead) {
                //creates a new script tag
                var oScript = document.createElement('script');

                //adds src and type attribute to script tag
                oScript.setAttribute('src', sScriptSrc);
                oScript.setAttribute('type', 'text/javascript');

                //calling a function after the js is loaded (IE)
                var loadFunction = function() {
                    if (this.readyState == 'complete' || this.readyState == 'loaded') {
                        callbackfunction();
                    }
                };
                oScript.onreadystatechange = loadFunction;

                //calling a function after the js is loaded (Firefox)
                oScript.onload = callbackfunction;

                //append the script tag to document head element
                oHead.appendChild(oScript);
            }
        }

        var SuccessCallback = function() {
            $("#identity").hide();
        }

        window.onload = function() {

            loadScript('http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js', SuccessCallback)

        };
    </script>
</head>
<body>

    <span id="identity"> This text will be hidden after SuccessCallback </span>

</body>

您应该在您的 scriptTag 变量中使用此代码,然后您可以使用 eval() 函数来评估此变量中的脚本。您还可以使用 jquery 的 getscript 函数在回调函数中加载第二个 javascript 文件

于 2012-07-02T11:58:19.547 回答