我需要始终包含一个屏幕浏览器大于或等于 699px 的文件,为此我尝试使用以下脚本:
<script type="text/javascript">
<!--
if (screen.width >= 699) {
document.write (" <!--#include virtual="/menu.asp"-->");
}
//-->
</script>
但它什么也没做。有谁知道如何让它工作?
最好的祝福。
我需要始终包含一个屏幕浏览器大于或等于 699px 的文件,为此我尝试使用以下脚本:
<script type="text/javascript">
<!--
if (screen.width >= 699) {
document.write (" <!--#include virtual="/menu.asp"-->");
}
//-->
</script>
但它什么也没做。有谁知道如何让它工作?
最好的祝福。
JavaScript 在页面传递到浏览器后触发。ASP 包括需要在服务器端完成,在呈现页面之前。
include 指令需要在进入 Web 浏览器之前成为页面的一部分,并且由于 JavaScript在Web 浏览器中执行,因此已经为时已晚。您可能会考虑将 include 放在页面中,但将其隐藏在div
withstyle="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>
这将为您提供更好的性能,并且会在用户调整浏览器窗口大小时自动隐藏和显示内容。
<!--#include virtual="/menu.asp"-->
是 SSI 语法(我认为 ASP Classic 也借用了该语法)。无论哪种方式,如果服务器支持它,它就会在服务器上进行处理并替换为文件的内容。
在所有服务器端处理完成后,将结果传递给客户端。
很可能无论文件的内容是什么,它都会包含"
字符和换行符,其中任何一个都会破坏 JavaScript 字符串文字。
根据经验,如果您想在更宽的屏幕上显示额外的内容,您应该:
如果您真的想完全避免在较窄的屏幕上加载内容,请使用 JavaScript 测试屏幕/窗口大小,然后使用XMLHttpRequest加载其他内容并使用 DOM 将其添加到页面中。