2015-12-24 1 views
0

Я прочитал и попробовал ряд решений для прокрутки iframe, но ни один из них не работает для меня. Это функция javascript - это обратный вызов таймера, выполняемый jquery.js. Когда входной файл изменен, я восстановил страницу (src = "pp_ContactRangesPanel.php? Sc = terra & path =/var/www/html/java_clocks/terra/terra_aos_times & filter = N; #target") и обновил iframe через reload(). Затем я пытаюсь прокрутить строку имени = «цель» в iframe, но она никогда не перемещается. В верхней части входной веб-страницы есть кнопка «перейти к целевой линии», и она переходит в целевую линию в порядке, поэтому я знаю, что там есть тег после перезагрузки. Это часть javascript, которая перезагружает страницу и должна прокручиваться до целевой строки.прокрутка не работает для тега имени в iframe

 // new mtime vs. last mtime test 
     if ($aPath[$currentFile][2] != $aPath[$currentFile][3]) { 
      $aPath[$currentFile][3] = $aPath[$currentFile][2]; 

      // read in file again and re-populate mission table 
      var obj = document.getElementById($aPath[$currentFile][0]); 
      obj.contentWindow.location.reload(); 

      var doc = (obj.contentDocument)? obj.contentDocument: obj.contentWindow.document; 
      var anchors = doc.getElementsByName('target'); 

      // got target line? 
      if (0 < anchors.length) 
      { 
       doc.scrollTo(0, anchors[0].offsetTop); 
      } 
     } 

Некоторые над головой:

  1. Высота IFrame был установлен в 257, когда были созданы 3 ряда фреймов.
  2. Этот iframe находится во втором ряду.
  3. Якоря [0] .offsetTop возвращается 834, что имеет смысл, так как сгенерированная веб-страница src содержит 80 строк.
  4. Для моего теста я либо прокручивал верхнюю, либо нижнюю часть страницы, прежде чем касаться входного файла, чтобы начать перезагрузку.

Итак, любые идеи, почему это не скрипт для целевой линии?

+0

Вы пытались прокрутить элемент 'html' вместо' document'? – Teemu

ответ

0

Я нашел работу вокруг проблемы прокрутки. Вместо выполнения команды obj.contentWindow.location.reload(), которая, как представляется, не включает в себя часть #target, я возвращаю атрибут src для себя. Поскольку исходная строка src (например, pp_ContactRangesPanel.php? Sc = aqua & path =/var/www/html/java_clocks/aqua/aqua_aos_times & filter = N; #target ") содержит" #target "в конце string, iframe прокручивает его, когда страница регенерируется. Было бы неплохо узнать, что было не так с командой scrollTo.

// read in file again and re-populate mission table 
var obj = document.getElementById($aPath[$currentFile][0]); 
// Note: the obj.contentWindow.location.reload(); way does not remember the #target 
// part so I am resetting the src to the orginal src value thereby forcing it a reload by 
// appending NULL to the end of the string. I could have gotten the string obj.src and 
// used that, but this seems cleaner. 
obj.src += ''; 
Смежные вопросы