javascript - 在 AngularJS 中关闭 URL 操作

标签 javascript angularjs address-bar location-provider route-provider

我正在尝试使用 Angular 编写我的第一个网络应用程序。

在正常模式下(html5Mode 关闭),Angular 强制地址的散列部分看起来像“路径”(添加前导“/”),并对特殊字符进行编码——例如,它允许单个“?”和哈希中的“#”,并将其他替换为 %3F 和 %23。

有没有办法关闭这个功能?我不想使用 $locationProvider/$routeProvider 功能 - 我想自己解析哈希(在我的例子中,用户将输入一些“自由文本”在哈希中搜索我的网站)。

我读到不能将 routeProvider 配置为使用正则表达式...

如果打开 htmlMode,则地址的散列部分不会强制看起来像路径(没有前导“/”),但它仍然对特殊字符进行编码。

我知道某些浏览器可能会对特殊字符进行编码/转义,但如果用户设法在其地址栏中输入一些特殊字符,那么我不想更改它。

谢谢

最佳答案

不确定这样做的副作用,但它完成了工作。请注意,即使有意,它也会禁用 Angular 应用程序的所有位置操作。

angular.module('sample', [])
    .config( ['$provide', function ($provide){
        $provide.decorator('$browser', ['$delegate', function ($delegate) {
            $delegate.onUrlChange = function () {};
            $delegate.url = function () { return ""};
            return $delegate;
        }]);
    }]);

ES6 变体:

angular.module('sample', [])
    .config(["$provide", $provide => {
        $provide.decorator("$browser", ["$delegate", $delegate => {
            $delegate.onUrlChange = () => { };
            $delegate.url = () => "";

            return $delegate;
        }]);
    }]);

在 Chrome 30、IE9、IE10 中测试。
灵感来自 https://stackoverflow.com/a/16678065/369724

关于javascript - 在 AngularJS 中关闭 URL 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18611214/

相关文章:

javascript - Uncaught ReferenceError : <mapkey> is not defined

javascript - 如何更新写在 Canvas 上的文本

javascript - underscore.js 根据单词数组从字符串中删除文本

android - 创建一个拆分控件,就像浏览器地址栏中的控件一样

javascript - 在 google chrome 地址栏中执行 JavaScript 函数

javascript - 是否可以动态导入节点模块?

angularjs - ng-include 不适用于脚本类型 ="text/ng-template"

javascript - 使用环回REST API时如何更改gulp-Angular项目的端口号

javascript - 由于 CORS,HTTP post 请求失败

javascript - Facebook 的内容是动态加载的吗?