Как я могу обнаружить присутствие Полосы прокрутки (использующий JavaScript) в HTML iFrame?

После того, как вопрос был обновлен:

q = [["99","99","99"],["9"]]
o = [["b","1"],["c","3"],["d","1"],["c","30"]]

q.flatten.map.with_index.with_object(Hash.new{ |h,k| h[k] = [] }) { |(qq, id), h| h[qq] << o[id] }.transform_values(&:to_h)

#=> {"99"=>{"b"=>"1", "c"=>"3", "d"=>"1"}, "9"=>{"c"=>"30"}}
21
задан Adam Lear 13 January 2012 в 16:15
поделиться

5 ответов

Используя jQuery можно сравнить высоту документа, scrollTop положение и высоту области просмотра, которая могла бы получить Вас ответ, которого Вы требуете.

Что-то вроде:

$(window).scroll(function(){
  if(isMyStuffScrolling()){
    //There is a scroll bar here!
  }
}); 

function isMyStuffScrolling() {
  var docHeight = $(document).height();
  var scroll    = $(window).height() + $(window).scrollTop();
  return (docHeight == scroll);
} 
8
ответ дан 29 November 2019 в 06:52
поделиться
var root= document.compatMode=='BackCompat'? document.body : document.documentElement;
var isVerticalScrollbar= root.scrollHeight>root.clientHeight;
var isHorizontalScrollbar= root.scrollWidth>root.clientWidth;

Это обнаруживает, существует ли потребность в полосе прокрутки. Для значения по умолчанию iframes это совпадает с, существует ли полоса прокрутки, но если полосы прокрутки вызываются на или прочь (использование ‘прокрутки = "да" / "нет"’ атрибут в родительском документе или CSS ‘переполнение: прокрутите/скройте’ в iframe документе), затем, это может отличаться.

42
ответ дан 29 November 2019 в 06:52
поделиться

Я не думаю, что это может быть сделано, если iframe содержание прибывает из другого домена из-за ограничений безопасности JavaScript.

Править: В этом случае что-то вроде давания iframe имени ='someframe' и идентификатор ='someframe2' и затем сравнение ['someframe'].document.body.offsetWidth кадров с document.getElementById ('someframe2') .offsetWidth должно дать Вам ответ.

1
ответ дан 29 November 2019 в 06:52
поделиться

Я думаю, что Ваша вторая попытка на правильном пути. Кроме вместо this, необходимо попытаться прокрутить/проверить document.body.

0
ответ дан 29 November 2019 в 06:52
поделиться
$(window).scroll(function(){
  if(isMyStuffScrolling()){
//scrolling
  }else{
//not scrolling
}
}); 

function isMyStuffScrolling() {
  var docHeight = $(document).height();
  var scroll    = $(window).height() ;//+ $(window).scrollTop();
  if(docHeight > scroll) return true;
  else return false;
}

улучшено-немного изменено из кода Джона Уинстенли

3
ответ дан 29 November 2019 в 06:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: