Html Internet Explorer/Edge未发送带有URL的片段

Html Internet Explorer/Edge未发送带有URL的片段,html,internet-explorer,fragment,microsoft-edge,hashcode,Html,Internet Explorer,Fragment,Microsoft Edge,Hashcode,我目前正在开发一个公司需要在最重要的浏览器(Chrome、Firefox、Safari、IE、Edge)上部署的网站 该网站由单个index.html页面组成,其中包含的内容将根据散列码进行替换。这意味着当我请求index.html#102时,div的内容会被替换为,比如说,contents[102] 我的问题是:当要求file:///.../index.html#102“(网站将存储在本地)、Internet Explorer(10、11)和Edge去掉#102并实际请求”file:///..

我目前正在开发一个公司需要在最重要的浏览器(Chrome、Firefox、Safari、IE、Edge)上部署的网站

该网站由单个index.html页面组成,其中包含的内容将根据散列码进行替换。这意味着当我请求index.html#102时,div的内容会被替换为,比如说,contents[102]

我的问题是:当要求file:///.../index.html#102“(网站将存储在本地)、Internet Explorer(10、11)和Edge去掉#102并实际请求”file:///.../index.html'. 所以我基本上每次都会出现在主页上。。。Chrome、Firefox和Safari都要求使用“index.html#102”(棒极了!),IE和Edge是唯一删除“#102”的浏览器

你知道为什么吗?我花了一整天的时间寻找答案,并尝试为类似问题提供的解决方案(,),但没有一个有效

我知道散列码是本地的,永远不会被发送到服务器:IE/Edge是否可能认为我的请求被发送到了服务器


我是一名初学者开发人员,试图在这些问题上帮助公司,这不是我的全职工作,因此我想我可能错过了一些关键的信息,您可以帮助我=随时询问详细信息

在表单标记中,仅为IE添加属性
onsubmit=“window.location.reload()”

或者可以使用jQuery
$(yourfoemid.attr('onsubmit',window.location.reload())添加它

或者你可以把它写在
文档上。准备好了吗

我不确定两年后是否对你有帮助

发布此消息是为了为面临类似问题的人节省时间。希望他们不会再像我一样在同样的问题上挣扎

为我发布工作解决方案 我们在应用程序中使用
SiteMinder
身份验证

我发现在成功验证后,
SiteMinder
正在使用登录表单隐藏变量
302重定向到用户请求的应用程序页面(其中存储用户请求的URL
/myapp/
-
而不包含哈希片段
,因为它不会被发送到服务器),名称类似于
重定向
。下面的示例表单

由于
重定向
隐藏变量只包含
/myapp/
,没有散列片段,而且它是302重定向,因此即使在到达应用程序之前,IE也会自动删除散列片段,无论我们在应用程序代码中尝试的解决方案是什么,都无法解决

IE仅重定向到
/myapp/
,并登录到我们应用程序的默认主页
https://ourapp.com/myapp/#/home

我已经浪费了将近一天的时间来弄清楚这种行为

解决办法是: 已将登录表单隐藏变量(
重定向
值更改为通过 将
window.location.hash
与现有值一起追加。类似于下面的代码

$(函数(){
var$redirect=$('input[name=“redirect”]”);
$redirect.val($redirect.val()+window.location.hash);
});
更改后,
redirect
隐藏变量将用户请求的URL值存储为
/myapp/#/pending/requests
,而
SiteMinder
将其重定向到IE中的
/myapp/#/pending/requests

上述解决方案在所有三种浏览器
Chrome、Firefox和IE


感谢@AlexFord对此问题的解答。

谢谢你的回答TylerH!不幸的是,这不起作用,因为Internet Explorer甚至没有要求正确的页面!我唯一能通过的方法是创建多个文件(例如index102.html),自动重定向到原始文件(例如index.html#102).我知道这很难看,但至少它起作用了:/