0

我需要始终包含一个屏幕浏览器大于或等于 699px 的文件,为此我尝试使用以下脚本:

<script type="text/javascript">
<!--
if (screen.width >= 699) {
document.write (" <!--#include virtual="/menu.asp"-->");
}
//-->
</script>

但它什么也没做。有谁知道如何让它工作?

最好的祝福。

4

3 回答 3

1

JavaScript 在页面传递到浏览器后触发。ASP 包括需要在服务器端完成,在呈现页面之前。

于 2012-12-08T18:51:01.943 回答
1

include 指令需要在进入 Web 浏览器之前成为页面的一部分,并且由于 JavaScriptWeb 浏览器中执行,因此已经为时已晚。您可能会考虑将 include 放在页面中,但将其隐藏在divwithstyle="display:none;"中,然后在页面加载时使用 JavaScript 将其删除:

<script type="text/javascript">
window.addEventListener('load', function(){
    if (screen.width >= 699)
        document.getElementById('myHiddenElement').style.display = null;
});
</script>

或者,您可以对CSS Media Queries使用相同的策略。

编辑:示例:

<style type="text/css">
#myHiddenElement {
    display: none;
}
@media screen and (min-width: 699px) {
    #myHiddenElement {
        display: block;
    }
}
</style>

这将为您提供更好的性能,并且会在用户调整浏览器窗口大小时自动隐藏和显示内容。

于 2012-12-08T18:52:00.853 回答
1

<!--#include virtual="/menu.asp"-->是 SSI 语法(我认为 ASP Classic 也借用了该语法)。无论哪种方式,如果服务器支持它,它就会在服务器上进行处理并替换为文件的内容。

在所有服务器端处理完成后,将结果传递给客户端。

很可能无论文件的内容是什么,它都会包含"字符和换行符,其中任何一个都会破坏 JavaScript 字符串文字。

根据经验,如果您想在更宽的屏幕上显示额外的内容,您应该:

  • 始终在页面中包含内容
  • 比屏幕大小更关心窗口大小
  • 使用 CSS媒体查询根据大小重新设置样式
  • 在较窄的窗口上一个接一个地显示内容,而不是完全隐藏一些

如果您真的想完全避免在较窄的屏幕上加载内容,请使用 JavaScript 测试屏幕/窗口大小,然后使用XMLHttpRequest加载其他内容并使用 DOM 将其添加到页面中。

于 2012-12-08T18:52:30.687 回答