通过 <script> HTML 代码中的 json 位置接收的 Angularjs



我见过很多类似的问题,但它们似乎都与<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);

最新更新