URL 参数阻止 javascript 正常工作?

发布于 2024-12-29 18:50:44 字数 1362 浏览 1 评论 0原文

首先,我的整个网站运行良好。到目前为止,所有页面都没有 URL 参数。现在问题开始了。我有一个 Flash 横幅,在 Apple 移动设备上必须是 PNG 静态图像。它工作得很好,直到我创建一个带有参数的页面(例如:mysite.com/Controller1/Page1/1)。一旦我有了参数,两个横幅(flash 和 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>');
} 

这是我的部分视图标题的摘要(刚刚从 _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
    );

知道发生了什么吗?

First of all, my whole web site works fine. All the pages, up to now, have no URL parameter. Now the problem begins. I have a flash banner that has to be a PNG static image on Apple mobile devices. It works great until I create a page with a parameter (ex: mysite.com/Controller1/Page1/1). As soon as I have a parameter, both banners (flash and PNG) appear.

Here's my 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>');
} 

Here's the summary of my partial view Header (just extracted from _Layout where the behavior was the same):

@Html.JsScript("../../Scripts/iOS.js")

<div id="swf">
    MY FLASH BANNER
</div>
<div id="no-swf">
    MY STATIC IMAGE
</div>

When I try a normal page (no parameter), I always have the message box This was called - PC but when I add a parameter (even on the same page!), I don't get any message.

Maybe it is a routing problem? I simplified to the maximum to leave only one route:

   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
    );

Any idea of what is going on?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夢归不見 2025-01-05 18:50:44
@Html.JsScript("../../Scripts/iOS.js")

当您向路径添加元素时,您需要向相对 URL 添加 ../ 或使用 确保相对 URL 解析为相同的绝对 URL。

也许上面应该变成

@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。

@Html.JsScript("../../Scripts/iOS.js")

When you add an element to the path, you need to add a ../ to your relative URLs or use a <base href="..."> to make sure the relative URLs resolve to the same absolute URL.

Maybe the above should become

@Html.JsScript("../../../Scripts/iOS.js")

or you can add

<base href="http://mysite.com/Controller1/Page1/">

near the top of your page.

http://www.w3.org/TR/html4/struct/links.html#h-12.4 says

In HTML, links and references to external images, applets, form-processing programs, style sheets, etc. are always specified by a URI. Relative URIs are resolved according to a base URI, which may come from a variety of sources. The BASE element allows authors to specify a document's base URI explicitly.

When present, the BASE element must appear in the HEAD section of an HTML document, before any element that refers to an external source. The path information specified by the BASE element only affects URIs in the document where the element appears.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文