次のようなブックマークレットを持つページを作成しようとしています:
<a ng-href="{{getBookmarklet()}}">Bookmarklet</a>
function MyCtrl($scope) {
$scope.getBookmarklet = function() {
return 'javascript:alert(1)';
}
}
href は unsafe:javascript:alert(1) としてサニタイズされます。したがって、これを防ぐために sce.trustAs を使用してみました:
function MyCtrl($scope, $sce) {
$scope.getBookmarklet = function() {
return $sce.trustAsUrl('javascript:alert(1)');
}
}
ただし、まだ URL に「安全でない」というプレフィックスが付きます。私も trustAsJs を試しましたが、うまくいきませんでした。compileProvider を使用してアプリ全体で javascript: URL をホワイトリストに登録したくありません。この 1 つのインスタンスだけを許可してください。