簡體   English   中英

允許來自Angular App的Skype調用(使用meanjs)

[英]Allow skype calls from Angular App (using meanjs)

我無法擺脫影響我的應用程序功能的小問題,以便能夠使用Skype撥打電話號碼,到目前為止我所擁有的是:

HTML

<a ng-href="skype:{{user.phone}}?call" class="btn btn-sm btn-success" type="button">{{user.phone}}</a>

ANGULAR

(function() {
  angular.module('core').config(coreConfig);

  coreConfig.$inject = ['$compileProvider'];

  function coreConfig($compileProvider) {
    $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|tel|file|skype):/);
  }
})();

結果總是一樣的,當我懸停元素開始調用時,瀏覽器會顯示: unsafe:skype:012345678?call並且不允許我撥打號碼...

我添加了配置部分瀏覽與類似問題相關的其他問題,但它沒有解決我的問題。

編輯 :我正在使用meanjs.org

編輯2 :請不要復制/粘貼我的問題代碼作為你的答案...我知道它適用於普通的Angular應用程序。 問題是我不能讓它使用meanjs.org應用程序。 謝謝。

編輯3 :我剛剛發現:如果我在主根/或子根中使用skype鏈接: /list它可以正常工作而不添加unsafe前綴。 在動態根目錄中: /list/1234它不再起作用。 我不知道它是否有幫助。

“bug”是由舊版本的ngFileUpload引起的,它覆蓋了我在此處報告的配置。

升級ngFileUpload的版本解決了我的問題。

謝謝你的幫助。

您需要使用正則表達式向Angular的白名單中明確添加URL協議。 默認情況下,僅啟用httphttpsftpmailto Angular將使用unsafe:的非白名單URL作為前綴unsafe:當使用chrome-extension:等協議時chrome-extension:

chrome-extension:列入白名單的好地方chrome-extension:協議將在您的模塊的配置塊中:

var app = angular.module( 'myApp', [] )
.config( [
    '$compileProvider',
    function( $compileProvider )
    {   
        $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|chrome-extension):/);
        // Angular before v1.2 uses $compileProvider.urlSanitizationWhitelist(...)
    }
]);

當您需要使用諸如file:tel:協議時,同樣的過程也適用。

有關詳細信息,請參閱AngularJS $ compileProvider API文檔

我已經讓它成功地跟隨了這個問題http://plnkr.co/edit/rIPFz9WhFjlRJ1ogCArP?p=preview

angular.module('plunker', [])

.config(function($compileProvider){
  $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|skype|mailto|tel|file):/)
})

.controller('MainCtrl', function($scope) {
  $scope.href = 'skype:123456?call';
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM