2016-09-28 92 views
0

我知道跑远程JavaScript是添加一个标签像运行从浏览器远程JavaScript,而无需修改DOM

<script src="example.com/ascript.js"></script> 

是否有可能做的Javascript类似的事情,而不需要修改DOM作为唯一的办法部分通话?

+1

这不完全运行的远程调用。它将导入一个JavaScript文件作为页面的一部分加载。如果文件调用一个函数,它会运行。但它也可以稍后加载函数。 这不会修改dom,它会加载到页面中,但这不是一个dom元素。它只是加载JavaScript。 –

+0

@HattanShobokshi看起来像我找到更多的信息,如果我搜索“加载”而不是“运行”。谢谢。 – djechlin

+0

这不是一个远程调用,而是一个脚本标记(即使有一个外部src)仍然是一个DOM元素。没有COORS访问权限,您不能影响其他人的服务器。 – PHPglue

回答

1

如果你问的是是否可以从远程源动态加载Javascript并运行它而不插入脚本标签,那么有一些方法可以做到这一点(尽管目前还不清楚它为什么是暂时的负担插入<script>标签并让系统自行加载并运行代码)。

简而言之,您可以使用Ajax调用将一些Javascript加载到字符串中,然后您可以在该字符串上运行eval()以执行它。这将对您在页面上下文中运行来自外部源的Javascript的所有常见安全性问题提出警告。

Ajax调用(与插入到DOM中的<script>标记不同)将受同源限制的限制,除非目标站点允许使用CORS进行访问。

例如:

fetch(someScriptURL).then(function(data) { 
    eval(data); 
});