自定义指令已被屏蔽

时间:2015-08-19 05:28:10

标签: angularjs firefox-addon

我已经定义了一个这样的自定义指令:

.directive('row', [function() {
    return {
        restrict: 'E',
        templateUrl: 'chrome://mailtowebmails/content/resources/directives/row.htm'
    };
}])

但是当我尝试使用它时,我收到了这个错误:

“错误:[$ sce:insecurl]阻止从$ sceDelegate策略允许的网址加载资源.URL:chrome://mailtowebmails/content/resources/directives/row.htm

尝试0

我尝试过像这样的santizing:

.config( [
    '$compileProvider',
    function( $compileProvider )
    {
        $compileProvider.aHrefSanitizationWhitelist(/^\s*(filesystem:chrome):/);
    }
])

但它没有解决它。

这是一个插件,所以我文件的路径在文件系统上。

尝试1

我也尝试过:

var ANG_APP = angular.module('mailtowebmails', [])
    .config(['$sceDelegateProvider', function ($sceDelegateProvider) {

        $sceDelegateProvider.resourceUrlWhitelist(['self', new RegExp('chrome')]);

    }])

然后我收到了这个错误:

  

错误:[$ injector:modulerr]由于以下原因导致无法实例化模块mailtowebmails:   [$ injector:modulerr]由于以下原因无法实例化模块$ sceDelegateProvider:   [$ injector:nomod]模块'$ sceDelegateProvider'不可用!您要么错误拼写了模块名称,要么忘记加载它。如果

尝试2

我也试过这个@Tribute推荐,但它没有用:

var ANG_APP = angular.module('mailtowebmails', [])
    .directive('row', [function() {
        return {
            restrict: 'E',
            templateUrl: 'chrome://mailtowebmails/content/resources/directives/row.htm'
        };
    }])
    .controller('BodyController', ['$scope', '$sce', function($scope, $sce) {

        $scope.trustSrc = function(src) {
            return $sce.trustAsResourceUrl(src);
        };

1 个答案:

答案 0 :(得分:1)

你“尝试1”的方法应该有效。但是必须改变正则表达式。

.config(['$sceDelegateProvider', function($sceDelegateProvider) {

  $sceDelegateProvider.resourceUrlWhitelist(['self', 'chrome://mailtowebmails/**/*.html']);

}])