在div中写一个js脚本

时间:2015-06-27 04:26:08

标签: javascript jquery html

我正在尝试使用jQuery从另一个网站获取脚本然后document.write it

这是我的代码

var url = "https://code.jquery.com/jquery-1.10.2.js";
var dam = $.getScript(url);
document.write(dam);

但这不起作用!! 我在页面上得到的所有内容都是[object Object]

这可以在没有XHR的情况下实现吗?

jsfiddle

6 个答案:

答案 0 :(得分:12)

请勿使用document.writeit does not do what you think it does不做的是在文档末尾写一些数据。它的作用而不是,是管道数据到当前写入流。如果没有写入流,它将创建一个新的,重置文档的内容。所以调用document.write(dam)意味着你只是擦了你的文件。 document.write是早期JavaScript时代的低级JS功能,不要使用

相反,你想使用现代DOM操作函数,所以在jQuery中,这就是:

$(document.head).append($("<script>").attr("src", url));

,其中

$("<script>")

构建一个新的脚本元素

$(...).attr("src", url)

将“src”属性设置为您需要的属性,并且:

$(document.head).append(...)

$(document.body).append(...)

将脚本加载到您的文档中。如果它是具有src属性的普通脚本,它基本上可以去任何地方,如果它是一个应该运行文本内容的脚本,则只能通过document.head实现。

虽然如果只是你需要加载并运行的脚本,你可以使用getScript,但是你不需要做任何其他事情,它只是:

var url = "https://code.jquery.com/jquery-1.10.2.js";
jQuery.getScript(url);

完成后,jQuery将加载脚本并执行它。什么都没有回来。

当然,你展示的代码是使用jQuery加载jQuery,所以这有点超奇怪。如果您只想在页面上加载jQuery,显然您只需使用HTML:

<!doctype html>
<html>
  <head>
    ...
  </head>
  <body>
    ...
    <script src="http://https://code.jquery.com/jquery-1.10.2.js"></script>
  </body>
</html>

最后加载脚本,因此脚本加载不会阻止您的页面。最后:为什么我们加载jQuery版本1.x而不是2.x? (如果你需要支持IE8:微软甚至不支持它,所以你可能不需要)。

最后,如果我们不想加载脚本,但我们真的只想要它的内容,就像纯文本一样,Stackoverflow上只有一百万个答案已经告诉你如何做到这一点。使用jQuery,即:

$.get("http://https://code.jquery.com/jquery-1.10.2.js", function(data) {
  $(document.body).append($("div").text(data));
});

但是你知道这已经是因为在Stackoverflow上已经被无数次询问了,你记得在提出问题之前按照how to ask的说明搜索网站,对吗?

答案 1 :(得分:4)

  

在页面上执行脚本不是我的目标!我想得到   脚本内容并把它放到div(USING JAVASCRIPT - NO XHR),就是这样   可能?

尝试使用<iframe>元素

<div>
  <iframe width="500" height="250" src="https://code.jquery.com/jquery-1.10.2.js">
  </iframe>
</div>

jsfiddle http://jsfiddle.net/snygv469/3/

答案 2 :(得分:0)

让它变得更容易......使用我的小提琴

http://jsfiddle.net/wwwfzya7/1/

我使用javascript创建HTML元素

var url = "https://code.jquery.com/jquery-1.10.2.js";

var script = document.createElement("SCRIPT"); //creates: <script></script>
script.src = url; //creates: <script src="long_jquery_url.js"></script>

document.body.appendChild(script); //adds the javascript-object/html-element to the page.!!!

答案 3 :(得分:0)

使用这种方式,它可以解决您的问题。

$.get( "https://code.jquery.com/jquery-1.10.2.js", function( data ) {  
  alert(data);
});

答案 4 :(得分:0)

您可以尝试添加

<script src="http://code.jquery.com/jquery-1.8.3.min.js" ></script>

然后是一个AJAX调用,但它从CACHE中提取数据。它看起来像一个AJAX但是当添加<script>时,文件进入缓存,然后从ajax中的缓存中读取。如果它没有存储在缓存中,请使用普通的AJAX读取它。

jQuery.cachedScript = function(url, options) {
    // Allow user to set any option except for dataType, cache, and url
    options = $.extend(options || {}, {
        dataType: "text",
        cache: true,
        url: url
    });
    // Use $.ajax() since it is more flexible than $.getScript
    // Return the jqXHR object so we can chain callbacks
    return jQuery.ajax(options);
};
$(document).on('ready', function() {
    // Usage
    $.cachedScript("http://code.jquery.com/jquery-1.8.3.min.js").done(function(script, textStatus) {
        console.log(script);
    });
});

正常解决方案

如果您准备好使用AJAX,请查看此fiddle

答案 5 :(得分:0)

如何获取远程文件的内容并将其粘贴到您的文档上并执行js代码

我想您希望将内容写在远程文件上,并希望在HTML中编写该内容。为此,您可以使用load()函数。

要执行此操作,请执行以下步骤:

1。创建文件index.html在其中写下以下代码:

 <pre id="remote_script"></pre>


 <script>

    $(document).ready(function() {
        //var url = "https://code.jquery.com/jquery-1.10.2.js";
        var url = "remote_script.html";/* For testing*/
        $('#remote_script').load(url,function(){
            eval($('#remote_script').text()); /* to execute the code pasted in #remote_script*/
        });

    });
    </script>

2。创建另一个文件remote_script.html,用于测试其中没有任何alert('a');标记的写入<script>并运行上述代码。