3

我知道您可以使用“innerHTML”获取和设置当前页面中标签的内容。

但是,我想知道是否有一种方法可以通过相同的方式读取(不是执行,而是读取内容)外部脚本/样式?就像是

<script id="dScript" src="url.js"></script>

//in real practice, this returns a blank
//what i need is to read url.js's contents
<script>
    var extScript = document.getElementById('dScript').innerHTML;
</script>

在相同的上下文中,LESS CSS 如何读取自定义链接表?我知道你可以通过 AJAX 来做到这一点,但我正在尝试使用脚本加载器加载内容,使用动态标签有效地绕过 SOP,因此 AJAX 是不可能的。

4

2 回答 2

4

不,这违反了同源政策。这就是 JSONP 执行第三方脚本的原因(它不会读取它)。

您也许可以使用跨域资源共享来做到这一点,但据我所知,这必须是 AJAX。

于 2012-04-18T02:41:50.070 回答
1

我创建了一个代理服务器来完全满足您的需求。该 API 称为 realJS(Resource Express Asynchronous Loader)。它从您想要的任何域异步加载您想要的任何资源:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8"/>
        <title>REAL</title>
        <script data-src="http://realdotjs.appspot.com/loader.html" src="http://realdotjs.appspot.com/script/real.js"></script>
        <script>
            window.addEventListener("realJSLoaded", function (realJS) {
                realJS.load.paths.push("http://code.jquery.com/");
                realJS.load("jquery.js", loadScript);

                function loadScript(script) {
                    // do something with the script
                }
            }, false);
        </script>
    </head>
</html>

您可以添加任意数量的路径realJS.load.paths,它会从正确的路径中找到正确的资源。它也支持 commonJS 模块标识符和绝对 URL。

可以加载任何类型的文本或二进制文件。但是,您必须正确处理返回的文件。干杯。=)

于 2012-04-18T02:53:21.543 回答