2014-10-03 3 views
0

Итак, у меня есть страница, в которой будет отображаться любой enewsletter (чистый html) из папки под названием «enews». Когда пользователь нажимает на этот список, страница html будет отображаться в iframe (до сих пор в той же странице)jquery не может получить доступ к iframe при первой попытке

<ul><li><a class="iframesrc" href="/enews/today.html" target="viewcontent">Today</a></li> 
    <li><a class="iframesrc" href="/enews/yesterday.html" target="viewcontent">Yesterday</a></li> 
</ul> 
<iframe id="viewcontent" name="viewcontent"></iframe> 

ENews HTML в страница не сделанные мной, так что я не полный контроль, как страница будет. и все файлы все еще находятся в одном домене.

Поэтому я могу отображать html-страницу внутри iframe без проблем. Единственное, что хочет мой босс, - это сделать каждую гиперссылку внутри этой html-страницы открытой в новой вкладке/окне.

Конечно, я могу просто добавить «target = _blank» на страницу enewsletter html, но это невозможно, так как у нас их более 100, я не могу это сделать вручную, а также ответственное лицо У меня есть навыки программирования, поэтому он фактически меняет содержание html.

Теперь, так или иначе, чтобы это произошло?

Я попытался использовать jquery для доступа к содержимому внутри iframe (для добавления), но он не работает достаточно хорошо.

<script> 
$(document).ready(function() {  
    $('a.iframesrc').click(function() { 
     console.log("clicked enewslink"); 
     var link = $(this).attr("href"); 
     console.log(link); 
     $("#viewcontent").attr("src",link);   
     $("#viewcontent").ready(function() { 
      var content = $("#viewcontent").contents().find("body").html(); 
      console.log(content); 
     }); 
    }); 
}); 
</script> 

Итак, когда страница загружена, и я нажимаю «сегодня», консоль ДЕЛАЕТ получить ссылку HREF, но «содержание» плавающий фрейм пусто плюс IFrame ДЕЛАЕТ отображение правильного содержания. Когда я нажимаю «вчера», консоль может получить ссылку href, но на этот раз «содержимое» iframe является распечаткой (на консоли), а iframe также отображает правильный контент.

Почему браузер не может перенести ссылку на первый клик?

Спасибо и любая помощь с благодарностью.

EDIT: На первый щелчок: can't get the html page

на второй клик: you can see the <table><tr>blablabla - the content of enews

+0

Только текущий документ имеет 'ready' обработчика, ваш плавающий фрейм элемент does not ** имеет готовый обработчик. – adeneo

+0

@adeneo привет, я удалил эту часть, и это не имеет значения. спасибо – user2960754

ответ

1

Я сделал следующие изменения в исходный код:

  • меняющимися id из iframe в viewcontent
  • изменение $("#viewcontent").ready(...) к $("#viewcontent").load(...)
  • движущихся $("#viewcontent").load(...) вне $('a.iframesrc').click(...) (так, что он будет уже связан, когда нажата ссылка впервые)

и это, кажется, работает.

Вот модифицированный (частичный) код:

IFrame:

<iframe id="viewcontent" name="myiframe"></iframe> 

Сценарий:

<script> 
$(document).ready(function() {  
    $('a.iframesrc').click(function() { 
     console.log("clicked enewslink"); 
     var link = $(this).attr("href"); 
     console.log(link); 
     $("#viewcontent").attr("src",link);   
    }); 
    $("#viewcontent").load(function() { 
     var content = $("#viewcontent").contents().find("body").html(); 
     console.log(content); 
    }); 
}); 
</script> 
+0

Здравствуйте, извините, я уже редактировал мой код. на самом деле ID для iframe и javascript верен, я просто набрал его неправильно в этом сообщении. спасибо – user2960754

+0

Нет проблем :) Я надеюсь, что решение сработало для вас. –

Смежные вопросы