Хром игнорирует обязательность скроллов
Две похожие проблемы, в обоих случаях хром игнорирует параметры, указывающие на обязательность скроллов.
Первый случай, мне нужно померить ширину стандартного скролла браузера (в разных ОС и браузерах эта величина разная!). var scrW = = (OS.isLinux)? 15: 17; //хак как раз для хрома var div = document.createElement('div'); div.setAttribute('style', 'position:absolute; top:-20px; left: -20px; overflow:scroll; background:white'); document.body.appendChild(div); if (div.offsetWidth > 9 && div.offsetWidth < 50) //хак для хрома и старых версий ие scrW = div.offsetWidth; Как мы видим, у дива используется overflow:scroll, однако див в Хроме создается без скролла. Второй случай с iframe'ом У ифрейма есть атрибут scrolling="YES" Однако если загружаемая страница полностью помещается в iframe, Хром не отображает скролл, несмотря на указанный атрибут. Кто-нибудь сталкивался с подобными проблемами? Если да, то как решали? Если нет, то какие есть соображения? |
Не совсем понятно зачем Вам обязательное присутствие скроллера (даже когда он не нужен), но подозреваю, что для однозначного определения размеров внутренней межскрольной области, поэтому:
Цитата:
Иногда, чтобы быть железно уверенным, что ничто не подпортит результат я ставлю стиль font-size:0px И не делайте div.setAttribute('style', '...') - в IE с этим проблемы делайте div.style.cssText = '...' Цитата:
убираете в фрейме скроллер, вставляете в фрейм DIV со скроллерами, а в этот DIV свою информацию. <iframe scrolling="NO" src="..." ></iframe> <div style="width:100%; height:100%; overflow:scroll"> данные фрейма... </div> второй вариант: ставите в тело фрейма абсолютно позиционированный DIV с размерами, превышающими на 1 px размеры фрейма. <iframe scrolling="YES" src="..." style="width:100px; height:100px"></iframe> <div style="position:absolute; width:101px; height:101px"> </div> Возможно, Вам также потребуется обнулить во фрейме margin и border. |
Цитата:
scrW = (panel.OS.isLinux)? 15: 17; var div = document.createElement('div'); div.innerHTML = ' ' var styles = 'position:absolute; top:-20px; left: -20px; overflow:scroll; background:white;font-size:0'; if (isIE) div.style.cssText = styles; else div.setAttribute('style', styles); document.body.appendChild(div); alert(div.offsetWidth+' - '+scrW ); if (div.offsetWidth > 9) scrW = div.offsetWidth; Теперь вместо "0" Хром пишет "1". =\ Ну и старые версии IE вместо четырехзначного числа пишут 1. Цитата:
|
Цитата:
Если это нужно, чтобы потом вычислить ширину внутренней области, то есть такой способ: вставляете DIV <div id="widthtest" style="width:100%"> </div> затем меряете его ширину: alert(document.getElementById('widthtest').offsetWidth); -эта ширина и будет шириной внутренней области, и будет меняться в зависимости от того есть скроллер, или нет. Но если уж очень надо знать ширину скроллера, то потом можете из ширины родителя этого DIV_a (window,body,...) вычесть offsetWidth этого DIV_a. |
у меня над ифреймом рисуется плашка, которая не должна заезжать на скролл, но должна быть впритык к нему.
Задачу по вычислению ширины скролла уже решил. Просто создал в html див с текстом у которого померил ширину скролла. Не красиво, зато работает. А вот задача со скроллом в ифрейме пока под вопросом. |
Цитата:
p.s. что такое плашка? |
Цитата:
|
Часовой пояс GMT +3, время: 05:30. |