首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS路由在Safari扩展中不起作用

AngularJS路由在Safari扩展中不起作用
EN

Stack Overflow用户
提问于 2014-06-29 21:37:35
回答 1查看 1.5K关注 0票数 1

我有一个非常简单的AngularJS应用程序,我用它来测试一个新的Safari扩展的创建。当我在常规Safari页面中的localhost上运行它时,所有操作都正常,但是当我在扩展上下文中运行相同的代码时,路由就不能工作了。

我花了一些时间跟踪两种场景中的角路由代码(这有点有趣),试图找出不同之处,但是除了重定向路径(http://localhost/.../helloworld.html#/loginsafari-extension://com.yourcompany.../helloworld.html#/login)之外,还没有找到其他的区别。直接在浏览器窗口中访问扩展路径会呈现我在扩展中看到的相同内容--基本的AngularJS功能正在工作(更新"sometext"),但路由不是(路由规范没有替换ng视图)。没有错误被抛出。

helloworld.html

代码语言:javascript
复制
<!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

代码语言:javascript
复制
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

代码语言:javascript
复制
var obControllers = angular.module('obControllers', []);

obControllers.controller('LoginCtrl', ['$scope',
    function($scope) {
        // do stuff
    }
]);

login.html

代码语言:javascript
复制
HERE I AM!

更新:

这与XHR请求获取路由页面有关--从常规web页面中XHR.send()返回readyState=4和status=200,从扩展返回readyState=3和status=0 (当移动到readyState=4状态时仍为0)。这使我怀疑跨源XMLHTTPRequest限制,但它肯定是从完全相同的域请求页面(safari-扩展名://.)

救命:-)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-30 19:28:02

我在这里回答我自己的问题,因为看起来我需要这样做,但是如果有人有更好的想法,请告诉我们。

我入侵了AngularJS核心库(ugh),如果在位置协议为"safari-extension“(否则返回404)的条件下对请求有响应,则返回状态为200。对于协议为"file“的条件,作者也是这样做的,因为在这种情况下,它也总是返回0状态,所以我不觉得太糟。

我会看看是否能引起谷歌的注意,这样他们就能让我了解我所缺少的东西,或者让他们把它添加到将来的版本中。

更新:

回顾一下GitHub项目中这段代码的历史,我发现他们实现了我打算在稍后版本的AngularJS中提出的相同的修复方法。:-)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24480510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档