$ («*», Документ) в JQuery возвращает только один элемент: html

0

У меня есть страница с двумя кадрами, и мне удалось ответить на перезагрузки одного из этих фреймов. В обработчике для перезагрузки я пытаюсь выбрать элемент во вновь загруженном фрейме с помощью jQuery, например:

  $("frame[name=WorkArea]").on("load", function () {
    console.log("Reloaded work area."); //this works fine
    alert($("tr.hdr", "frame[name=WorkArea]").html());
  });

В поле предупреждения указано "undefined". Когда я экспериментирую на консоли, чтобы "выбрать все",

$("*", "frame[Name=WorkArea]")

отображается только один элемент: необработанный html кадра.

Поэтому в основном я не могу выбрать что-либо внутри рамки. Похоже, DOM еще не сконструирован для содержимого HTML фрейма (?) Что мне не хватает?

PS Не уверен, что это актуально, но оно находится в сценарии инъецированного контента для расширения Chrome.

  • 0
    по соображениям безопасности javascript не может получить доступ к другому хосту
  • 0
    @xzegga в замешательстве ... почему тогда я вижу HTML? Кроме того, домен одинаков для внешней страницы и внутренних фреймов.
Показать ещё 1 комментарий
Теги:
google-chrome-extension

2 ответа

1
Лучший ответ

Попробуй это,

$("frame[name=WorkArea]").on("load", function () {
   console.log("Reloaded work area."); //this works fine
   alert($(this).contents().find('tr.hdr').html()); // use this and find() here
});
  • 0
    Я получаю то, что похоже на те же результаты, что и раньше: $ (this) .find ('*') возвращает пустые скобки (или не определено при добавлении 'html ()'); $ (this) отображается в консоли как фрейм, содержащий документ, содержащий HTML. Может ли это быть что-то делать с запуском сценария из сценария содержимого расширения Chrome?
  • 0
    Попробуйте использовать contents() прежде чем find() смотри мой обновленный ответ
0

Попробуйте с .find() в jquery

$("*").find("frame[name=WorkArea]").html();

или

 $(document).find("frame[name=WorkArea]").html();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню