我以前从未见过 实际使用过的<base>HTML标签.它的使用存在缺陷,这意味着我应该避免它吗?
事实上我从来没有注意到它在现代生产网站(或任何网站)上的使用让我对它持怀疑态度,尽管看起来它可能有用于简化我网站链接的有用应用程序.
使用基本标签几周后,我最终找到了使用基本标签的一些主要问题,这使得它比最初出现时更不可取.从本质上讲,变化href='#topic'和href=''基本标签下是非常有它们的默认行为不兼容,并可以从默认行为,这种变化很容易使第三方库的控制范围之外的非常不可靠的 以意想不到的方式,因为它们在逻辑上依赖于默认行为.通常,这些更改是微妙的,并且在处理大型代码库时会导致不那么明显的问题.我已经创建了一个回答,详细说明了我在下面遇到的问题.因此,在您进行广泛部署之前,请自行测试链接结果<base>,这是我的新建议!
你们中的任何人都知道如何在AngularJS中很好地处理锚式哈希链接吗?
我有一个简单的FAQ页面的以下标记
<a href="#faq-1">Question 1</a>
<a href="#faq-2">Question 2</a>
<a href="#faq-3">Question 3</a>
<h3 id="faq-1">Question 1</h3>
<h3 id="faq-2">Question 2</h3>
<h3 id="fa1-3">Question 3</h3>
Run Code Online (Sandbox Code Playgroud)
当点击上面任何一个链接时,AngularJS拦截并将我路由到一个完全不同的页面(在我的例子中,404页面,因为没有与链接匹配的路由.)
我的第一个想法是创建一个匹配" / faq /:chapter " 的路由,并在相应的控制器中检查$routeParams.chapter匹配元素之后,然后使用jQuery向下滚动到它.
但是然后AngularJS又一次打击我,只是滚动到页面的顶部.
所以,这里的任何人都做过类似的事情并且知道一个很好的解决方案吗?
编辑:切换到html5Mode应该解决我的问题,但我们有点必须支持IE8 +所以我担心它不是一个公认的解决方案:/
我正在尝试使用Angular编写我的第一个Web应用程序.
在正常模式下(html5Mode关闭),Angular强制地址的哈希部分看起来像"路径"(添加前导"/"),并对特殊字符进行编码 - 例如,它允许单个"?" 哈希中的"#"和用%3F和%23替换其他的#.
有没有办法关闭此功能?我不想使用$ locationProvider/$ routeProvider功能 - 我想自己解析哈希(在我的情况下,用户将在哈希中输入一些"自由文本"以在我的网站内搜索).
我读到routeProvider无法配置为使用正则表达式...
如果打开htmlMode,则不会强制地址的散列部分看起来像路径(没有前导"/"),但它仍然编码特殊字符.
我知道有些浏览器可能会编码/转义特殊字符,但如果用户设法在其地址栏中输入一些特殊字符,那么我不想更改它.
谢谢
javascript address-bar location-provider angularjs route-provider
angularjs ×2
javascript ×2
address-bar ×1
anchor ×1
base-tag ×1
contextpath ×1
hashtag ×1
html ×1