我正在尝试使用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的情况下实现吗?
答案 0 :(得分:12)
请勿使用document.write
,it 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>
并运行上述代码。