2013-10-16 46 views
5

Próbuję utworzyć stronę, która ma bookmarkletu na tak:kątowa sce.trustAsUrl i javascript HREF

<a ng-href="{{getBookmarklet()}}">Bookmarklet</a> 

function MyCtrl($scope) { 
    $scope.getBookmarklet = function() { 
    return 'javascript:alert(1)'; 
    } 
} 

href zostanie oczyszczone jako niebezpieczny: javascript: alert (1). Tak, próbowałem za pomocą sce.trustAs aby temu zapobiec:

function MyCtrl($scope, $sce) { 
    $scope.getBookmarklet = function() { 
    return $sce.trustAsUrl('javascript:alert(1)'); 
    } 
} 

Jednak wciąż otrzymuję „niebezpieczny” prefiks na moich adresów URL. Próbowałem też trustAsJs, bez powodzenia. Nie chcę dodawać do białej listy javascript: adresów URL w całej mojej aplikacji z compileProvider, pozwól tylko na to jedno wystąpienie.

Odpowiedz

0

Wpadłem na ten problem i udało mi się go obejść, używając zamiast tego $sce.trustAsHtml().

JS:

function MyCtrl($scope, $sce) { 
    $scope.getBookmarklet = function() { 
    return $sce.trustAsHtml('<a href="javascript:alert(1)">Bookmarklet</a>'); 
    } 
} 

HTML:

<ng-bind-html ng-bind-html="::getBookmarklet()"></ng-bind-html> 

to prawdopodobnie stwarza problemy z CSS i innych dyrektyw, ale takie problemy mogą być zazwyczaj obejść.