.data() HTML5 поперечное окно

Я пытаюсь поместить некоторые данные в тег html дочернего окна. Но это не похоже на работу. Я попытался вставить его с помощью некоторого jquery для этого дочернего окна, и это работает нормально.

Вот код, реализованный в родительском окне для отправки данных в дочернее окно:

$(".something", fullscreen.document).data("data1", "whatever");

Который вернет "undefined" со следующим кодом jQuery в дочернем окне.

console.log($(".something").data("data1"));

Но когда я сохраняю данные с помощью дочернего jQuery-скрипта, он работает отлично:

$(".something").data("data1", "whatever");

Разрешено ли хранить данные в разных окнах в тегах?

2 ответа

Решение

JQuery использует собственное хранилище данных для данных, которые вы устанавливаете с .data(), Каждый экземпляр jQuery (в каждом окне) будет иметь свое собственное отдельное хранилище данных, поэтому вы не получите результаты от одного при вызове из другого.

Если ваши данные - просто строка, то вам, вероятно, будет проще не беспокоиться о хранилищах данных нескольких экземпляров и просто использовать .attr() сохранить строку как фактический атрибут в объекте DOM. Кроме того, возникает нулевой вопрос о том, где он хранится или как получить к нему доступ, потому что он находится непосредственно на объекте DOM, к которому вы можете легко добраться из любого экземпляра jQuery.

// store data on the object
$(".something", fullscreen.document).attr("data-data1", "whatever");

// read data from within the target window
console.log($(".something").attr("data-data1"));

Обратите внимание на использование HTML5 "data-xxx" Соглашение об избежании любых конфликтов имен атрибутов со стандартными атрибутами.

JQuery не сохраняет данные с DOMElement но с в объеме используется экземпляр JQuery. В связи с этим два экземпляра jQuery, независимо от того, находятся ли они в одном и том же документе (например, в двух версиях jQuery) или в разных документах, не будут обмениваться внутренними данными, а также не смогут получить к ним доступ.

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

Если вы хотите получить доступ к данным в дочернем элементе, для которого данные были такими:

$(".something", fullscreen.document).data("data1", "whatever");

тогда вам нужно будет сделать это так:

parent.window.$(".something", docmuent).data('data1');
Другие вопросы по тегам