看看实际的 javascript 文件,它基-6ren">
gpt4 book ai didi

javascript - AngularJS $http 检索外部 javascript 文件

转载 作者:行者123 更新时间:2023-12-03 09:32:33 24 4
gpt4 key购买 nike

我有一个第三方表单解决方案,可以通过导入 JavaScript 文件将其嵌入到我的网站中。嵌入脚本的说明实际上是这样的“复制并粘贴此内容:”

<script type="text/javascript" src="https://<form.company.com>/<form_name>.js"></script>

看看实际的 javascript 文件,它基本上只是一组

document.write("            <input id=\"SubmitButton2070990\""+"\n");
document.write(" class=\"fsSubmitButton\""+"\n");
document.write(" style=\"display: block;\""+"\n");
document.write(" type=\"submit\""+"\n");
document.write(" value=\"Submit Form\" />"+"\n");

现在,我尝试了一些事情......我有一个带有模板 URL 的指令,该指令会命中包含该脚本的简单部分。它看起来像这样:

指令:

angular.directive('feedbackForm',function() {
return {
restrict: 'A',
templateUrl: '/static/form.html'
};
)

form.html

<div>
<h2>testing form</h2>

<script type="text/javascript" src="https://<form.company.com>/<form_name>.js"></script></div>
</div>

所发生的只是渲染了 html,但脚本的内容并未...

我尝试了一个 $http 请求,该请求从上述第 3 方的链接获取脚本的内容,并尝试执行它。类似的东西

$http.get('https://<form.company.com>/<form_name>.js')
.then(function(response){
var formScript = new Function(response.data);
formScript();
})

但是,我的浏览器中的网络选项卡显示,虽然请求以 200 响应代码发送,但响应没有内容,为 0 字节等。

基本上,我不知道我做错了什么......

我真的可以这样做吗?我遇到了一些跨域脚本类型的问题吗?

最佳答案

这就是在模板中处理脚本的方式。

app.directive('directive', function () {
return {
template: '<script src="404.js"><\/script>' +
'<script>console.log("inline script");<\/script>',
link: function (element, attrs) {
var scripts = element.find('script');
angular.forEach(scripts, function (script) {
script = angular.element(script);
var type = script.attr('type');
var src = script.attr('src');

if (type && !type.match(/^(?:text|application)\/javascript$/i))
return;

var scriptFixed = angular.element('<script>');
if (src) {
scriptFixed.attr('src', src);
} else {
scriptFixed.text(script.text());
}
script.replaceWith(scriptFixed);
});
}
};
});

使用 $http 请求脚本时,显然会遇到 XSS 问题。

关于javascript - AngularJS $http 检索外部 javascript 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31455217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com