У меня есть очень простое приложение AngularJS, которое я использую для тестирования создания нового расширения Safari. Когда я запускаю его с локального хоста на обычной странице Safari, все работает, но когда я запускаю тот же код в контексте расширения, маршрутизация не работает.
Я потратил некоторое время на отслеживание кода маршрутизации Angular в обоих сценариях (что довольно забавно), чтобы попытаться найти различия, но не смог, кроме пути перенаправления (http://localhost/.../helloworld.html#/login
против safari-extension://com.yourcompany.../helloworld.html#/login
). Нажатие на путь расширения непосредственно в окне браузера отображает то же самое, что я вижу в расширении: основные функции AngularJS работают (обновление «sometext»), но маршрутизация — нет (спецификация маршрута не заменяет ng-view). Никакие ошибки не вылетают.
helloworld.html
<!DOCTYPE html>
<html ng-app="obApp">
<head>
<title>Hello World, AngularJS</title>
<script type="text/javascript" src="angular.js"></script>
<script type="text/javascript" src="angular-route.js"></script>
<script type="text/javascript" src="app.js"></script>
<script type="text/javascript" src="controllers.js"></script>
</head>
<body>
Write some text in textbox:
<input type="text" ng-model="sometext" />
<h1>Hello {{ sometext }}</h1>
<div ng-view></div>
</body>
</html>
app.js
var obApp = angular.module('obApp', ['ngRoute', 'obControllers']);
obApp.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/login', {
templateUrl: 'login.html',
controller: 'LoginCtrl'
}).
otherwise({
redirectTo: '/login'
});
}]);
controllers.js
var obControllers = angular.module('obControllers', []);
obControllers.controller('LoginCtrl', ['$scope',
function($scope) {
// do stuff
}
]);
логин.html
HERE I AM!
ОБНОВЛЕНИЕ:
Это как-то связано с запросом XHR для получения страницы маршрутизации - с обычной веб-страницы XHR.send() возвращает readyState=4 и status=200, из расширения он возвращает readyState=3 и status=0 (когда он переходит в состояние readyState=4, статус по-прежнему равен 0). Это заставляет меня подозревать ограничения XMLHTTPRequest из разных источников, но он определенно запрашивает страницу из того же домена (safari-extension://...)
ПОМОЩЬ! :-)