gpt4 book ai didi

javascript - 使用 angular.element() 注入(inject)嵌套内联脚本标记不起作用

转载 作者:行者123 更新时间:2023-12-03 08:10:48 25 4
gpt4 key购买 nike

我想向我的 DOM 注入(inject)以下嵌套字符串:

<div><script>alert(1);</script></div>

当我尝试使用 angular.element() 执行任务时,它确实将其添加到 DOM,但不会触发内联脚本:

var body = angular.element(document.body);
var el = angular.element('<div><script>alert(1);</script></div>');
body.append(el);

如果我使用 jQuery,效果会很好:

$('body').append('<div><script>alert(1);</script></div>');

当我逐个显式创建 DOM 元素时,它也可以工作:

var d = document.createElement('div');
var s = document.createElement('script');
s.innerHTML='alert(1)';
d.appendChild(s);
document.body.appendChild(d);

那么我的 Angular 解决方案有什么问题吗?

最佳答案

对于添加脚本,您可以使用 endorama 添加的解决方案

/*global angular */
(function (ng) {
'use strict';

var app = ng.module('ngLoadScript', []);

app.directive('script', function() {
return {
restrict: 'E',
scope: false,
link: function(scope, elem, attr) {
if (attr.type === 'text/javascript-lazy') {
var code = elem.text();
var f = new Function(code);
f();
}
}
};
});

}(angular));

只需将此脚本添加到您的模板中

<script type="text/javascript-lazy">
alert(1);
</script>

关于javascript - 使用 angular.element() 注入(inject)嵌套内联脚本标记不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34156426/

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