我见过很多类似的问题,但它们似乎都与<p>
标签有关,不适用于脚本。
下面的代码片段是一个可电子签名的pdf - 由于某种原因,它没有在这里呈现,但如果放在.html
中,它将只是一个基本的pdf,有2个可签名的字段。
<script type='text/javascript' language='JavaScript' src='https://secure.eu1.echosign.com/public/embeddedWidget?wid=CBFCIBAA3AAABLblqZhBErQXBc488fW6dc9TExmomSqMLibzpk1duAQnawv3c1xGBoAjI-zvPUGWe1goCLs0*'></script>
我通过 json 接收脚本,并尝试在返回时将其嵌入到 html 页面上。我正在使用ngSanitize
这是我迄今为止尝试过的...
角:
vm.someFunction = function () {
$http({
url: 'https://api.eu1.echosign.com/api/rest/v5/widgets',
method: "POST",
data:
{
// ... json data
}
}).then(function (response) {
$scope.data = response.data;
$scope.script = {content : response.data.javascript };
}
)};
});
.HTML:
<div ng-app="MyApp" ng-controller="MyCntrl as vm">
<p ng-bind-html="script.content"></p>
</div>
我已经看到该链接以字符串形式返回一个javascript函数。
document.write('<iframe src="https://secure.eu1.echosign.com/public/esignWidget?wid=CBFCIBAA3AAABLblqZhBErQXBc488fW6dc9TExmomSqMLibzpk1duAQnawv3c1xGBoAjI-zvPUGWe1goCLs0*&hosted=false&token=&firstName=&lastName=&nameEditable=true" width="100%" height="100%" frameborder="0" style="border: 0; overflow: hidden; min-height: 500px; min-width: 600px;"></iframe>');
你可以做的是评估:
eval($scope.script.content)
但是您的网页存在一个问题,被评估代码覆盖。
最好的方法是打开一个新选项卡,获取 Opener 属性的引用。
var newWindow = window.open();
newWindow.opener.window.eval($scope.script.content);
使用以下命令解决:
var myWindow = window.open("http://pdf.test/input.html");
myWindow.document.write($scope.script);