2015-11-12 48 views
1

我想顯示一個基於agularjs變量的基於url的PDF。我有它的谷歌瀏覽器工作,但它似乎並沒有在IE瀏覽器中工作。我已經努力將網址編碼到頁面中,並且完美地工作。這裏是展示我的結果plunker:http://plnkr.co/edit/gFfGQCzAfmf2zf5C2Bpc?p=previewAngularJS PDF查看器不能在IE中工作

請注意,看到我的問題的唯一方法是,如果你在IE中使用plunker不是瀏覽器。而我的IE和Adobe都是最新的。

我的理論是,Adobe正在以{{documentSrc}}的形式啓動URL,然後運行角度並用該值替換該變量,然後Adobe將永遠不會識別它。這是真的?如果是的話,我該如何解決這個問題?如果不是,發生了什麼事?

代碼

<object data="{{documentSrc}}" type="application/pdf" width="100%" height="700px"></object> 
+0

有你'data'的地方嘗試過'NG-ATTR-data'? – Sampson

+0

在IE中收到拒絕訪問警報。 –

+0

這些資源是否託管在同一個域中? – Sampson

回答

2

用指令爲對象元素。您需要創建手錶來檢測數據和類型綁定中的更改。還有一個問題,如果您打算多次更改綁定,您需要跟蹤您的指令元素。

在這裏看到:http://embed.plnkr.co/fFtkcG/preview

<object-reloadable>No document selected</object-reloadable> 
.directive('objectReloadable', function() { 
    var link = function(scope, element, attrs) { 
    var currentElement = element; 

    scope.$watch('documentSrc', function(newValue, oldValue) { 
     if (newValue !== oldValue) { 
     scope.documentSrc = newValue; 
     var html = '<object type="application/pdf" data="' + newValue + '"></object>'; 
     var replacementElement = angular.element(html); 
     currentElement.replaceWith(replacementElement); 
     currentElement = replacementElement; 
     } 
    }); 
    }; 

    return { 
    restrict: 'E', 
    scope: false, 
    link: link 
    }; 
})