dia*_*dem 4 javascript internet-explorer scrollbar
当我调用window.open时,我可以包含一个参数列表.其中一个参数是滚动条,可以设置为是或否.
当我在子窗口中放置javascript时,javascript需要检测窗口打开时是否将滚动条设置为yes或no.我想知道窗口是否默认启用了滚动条.
我只关心在IE中这样做.我该如何检查?window.scroolbar在IE中不起作用.
我该怎么做呢?要非常清楚,我不是在谈论div溢出,我在谈论窗口的滚动条属性.
编辑:
- 我在IE中,因此window.scrollbars/this.scrollbars不会返回任何内容
- 窗口滚动条存在于正文之外.
- 查看文档的宽度将告诉我有关该文档的信息.我甚至可以弄清楚文档中是否有滚动条.这不会告诉我有关窗口本身的任何信息.
- 由于苦行僧的原因,窗口滚动条的宽度会根据当前所选的Windows桌面主题的变化而变化.
除了打开子窗口(设置滚动条= yes或no)的脚本旁边,添加一个窗口级变量,如果scrollbars = yes则为true,否则为false.
然后在子窗口的脚本中,查找已设置的值self.opener.myWindowLevelVariable.
您也可以命名变量.如果您愿意,重要的部分是self.opener或window.opener.
更新:
响应您的更新,不想在父级中使用变量...然后反转我的初始建议.将变量放在子项创建时.
家长:
var scrollwindow = window.open("file.htm", "anotherwindow", "width=400,height=250,scrollbars=no");
scrollwindow.hasScrollbars = false;
Run Code Online (Sandbox Code Playgroud)
儿童:
alert(hasScrollbars);
Run Code Online (Sandbox Code Playgroud)
如果你想处理直接打开子窗口的情况,那么它会变得更有趣......
儿童:
try {
// do something with hasScrollbars
// If it isn't true or false, ie undefined, using it will throw you into the catch.
alert(hasScrollbar);
} catch (e) {
// scrollbars weren't explicitly added or forbidden, so they'll automatically
// show up if the content is larger than the window. In this case, use a
// scrollbar sniffing technique.
var hasVerticalScrollbar = document.body.scrollHeight > document.body.clientHeight;
var hasHorizontalScrollbar = document.body.scrollWidth > document.body.clientWidth;
}
Run Code Online (Sandbox Code Playgroud)
滚动条嗅探:我认为这就是Stephano的目标.他走在正确的轨道上.但是组合使用clientWidth,scrollWidth,clientHeight和scrollHeight.从怪癖模式:
如果元素没有滚动条,则scrollWidth/Height应该等于clientWidth/Height.
当元素没有滚动条时,IE使scrollHeight等于内容的实际高度; 而不是元素的高度.scrollWidth是正确的,除了在IE8中,它关闭了5个像素.
所以,你必须为IE调整滚动条嗅探部分,但这是基本的想法.
| 归档时间: |
|
| 查看次数: |
10415 次 |
| 最近记录: |