我有一个Cordova应用程序,即从json api获取html文本。问题是在文本中我有链接,如果你按下它们就会在cordova webview中打开它们
来自json调用的示例文本:
{newstext: "<div>
Some text
<div>
Some text 2
<a href="www.google.com">Go link</a>
</div>
</div>"
}
我需要以某种方式解析它或拦截它。我尝试了e.preventDefaults,甚至试图添加一个自定义类,但是如果它在angularjs模板上没有找到链接:
<div ng-bind-html="htmlText"></div>
有什么想法吗?
答案 0 :(得分:0)
不确定为什么要这样做,但这应该可以解决问题。
<a href="SOME_URL" ng-click="$event.preventDefault()">
您可以从href
标记中删除<a>
属性。请参阅ngHref docs示例。
答案 1 :(得分:0)
如果您需要屏蔽此链接,可以使用cordova / phonegap domain whitelist。
如果您需要过滤服务器响应,可以使用拦截器来执行此操作。
app.config(function($provide, $httpProvider){
$provide.factory('FilterInterceptor', function($q, $injector, $window, $rootScope){
return {
request: function(config){
return config || $q.when(config);
},
requestError: function(rejecton){
return $q.reject(rejecton);
},
response: function(response){
//Check if your calling an external URL
if(new RegExp("externalresource").test(response.config.url)) {
console.log(response.data);
//Do a substitution on the href with navigator.load(url, openexternal:true)
}
return response || $q.when(response);
},
responseError: function(rejecton){
return $q.reject(rejecton);
}
}});
$httpProvider.interceptors.push('FilterInterceptor');
});
请确保仅对外部资源上的调用替换href
属性。