首先,我的整个网站都运行正常。到目前为止,所有页面都没有URL参数。现在问题开始了。我有一个flash横幅,必须是Apple移动设备上的PNG静态图像。它工作得很好,直到我创建一个带参数的页面(例如:mysite.com/Controller1/Page1/1)。只要有参数,就会出现两个横幅(闪光和PNG)。
这是我的iOS.js:
if (navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPod/i))
{
alert("This was called - Mac mobile devices");
document.write('<style type="text/css"><!--#swf{display:none;}--></style>');
}
else {
alert("This was called - PC");
document.write('<style type="text/css"><!--#no-swf{display:none;}--></style><script src="js/swfobject_modified.js" type="text/javascript"></script>');
}
这是我的部分视图Header的摘要(刚刚从_Layout中提取行为相同):
@Html.JsScript("../../Scripts/iOS.js")
<div id="swf">
MY FLASH BANNER
</div>
<div id="no-swf">
MY STATIC IMAGE
</div>
当我尝试普通页面(没有参数)时,我总是有消息框This was called - PC
但是当我添加参数时(即使在同一页面上!),我也没有收到任何消息。
也许是路由问题?我简化为最多只留下一条路线:
routes.MapRoute(
null, // Nom d'itinéraire
"{controller}/{action}/{id}", // URL avec des paramètres
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Paramètres par défaut
);
知道发生了什么事吗?
答案 0 :(得分:1)
@Html.JsScript("../../Scripts/iOS.js")
在路径中添加元素时,您需要向相对网址添加../
或使用<base href="...">
确保相对网址解析为相同的绝对网址。
也许上面应该成为
@Html.JsScript("../../../Scripts/iOS.js")
或者您可以添加
<base href="http://mysite.com/Controller1/Page1/">
靠近页面顶部。
http://www.w3.org/TR/html4/struct/links.html#h-12.4说
在HTML中,外部图像,小程序,表单处理程序,样式表等的链接和引用始终由URI指定。根据基URI解析相对URI,基URI可能来自各种来源。 BASE元素允许作者明确指定文档的基本URI。
如果存在,BASE元素必须出现在HTML文档的HEAD部分中,在引用外部源的任何元素之前。 BASE元素指定的路径信息仅影响元素出现的文档中的URI。