jQuery Force встановив атрибут src для iframe


83

У мене є головна сторінка (насправді JSP) з внутрішнім фреймом як;

<iframe name="abc_frame" id="abc_frame" src="about:blank" frameborder="0" scrolling="no"></iframe>

Зараз на головній сторінці є кілька посилань (які відображаються динамічно через JSP), які можуть спробувати встановити src на якусь URL-адресу ...

Тепер моє питання полягає у використанні jQuery (може бути live ()), чи можу я перевизначити це таким чином, що атрибут "src" для abc_frame завжди мав би якесь конкретне значення (наприклад, "somefixedURL")

Я не можу зафіксувати клацання посилання, оскільки воно повністю динамічно створюється за допомогою якогось коду Java, а отже, я намагаюся замінити iframe src?

Відповіді:


166

Використовуйте attr

$('#abc_frame').attr('src', url)

Таким чином ви можете отримати та встановити кожен атрибут тегу HTML. Зауважте, що є також .prop(). Про відмінності див. .Prop () проти .attr () . Коротка версія: .attr()використовується для атрибутів, оскільки вони написані у вихідному коді HTML, і .prop()для всього, що JavaScript приєднано до елемента DOM.


Причина, по якій це не спрацьовує, полягає в тому, що після завантаження сторінки інше посилання змінить src на нове значення ...
testndtv

Якщо ви вкажете код у кінці файлу, ваш код буде виконаний після інших сценаріїв. Якщо проблему створює конкретне посилання, яке натискає користувач, ви можете додати другу посилання onclick до посилання. В іншому випадку вам доведеться використовувати setTimout / setInterval і повторно перевіряти значення src (негарно!).
PiTheNumber

20

якщо ви використовуєте jQuery 1.6 і новіших версій , ви хочете використовувати .prop (), а не.attr():

$('#abc_frame').prop('src', url)

Див. Це запитання для пояснення відмінностей.


4
Цікаве посилання, але зверніть увагу, що відповідь оновлено, оскільки jQuery повернув attr() поведінку. Загалом, я б не погодився з використанням .prop()тут, оскільки srcце атрибут, а не властивість, як .prop()пояснює документація API для вас.
PiTheNumber

9

Під час генерації посилань встановіть ціль на властивість name iframes, і вам, мабуть, взагалі не доведеться мати справу з jquery.

<a href="inventory.aspx" target="contentframe"  title="Title Inventory">
<iframe id="iframe1" name="contentframe"  ></iframe>

Хороша ідея використовувати вбудований метод браузера, коли це можливо, але я думаю, що користувач має динамічні посилання, тому йому потрібно зафіксувати attr натискання.
efwjames

Наскільки динамічний? При генерації сторінки просто встановіть href на те, що вам потрібно. Або навіть при домашньому завантаженні просто встановіть атрибут href, якщо вам потрібно. Справа в тому, що не потрібно обробляти властивість src iframe, і це робить це можливим.
Брайан Різо,


5

Встановлення атрибута src у мене не спрацювало. В iframe не відображалася URL-адреса.

У мене спрацювало:

window.open(url, "nameof_iframe");

Сподіваюся, це комусь допомагає.


налаштування з .attr () також не спрацювало для мене. Однак це працює
Енді Н,

3
<script type="text/javascript">
  document.write(
    "<iframe id='myframe' src='http://www.example.com/" + 
    window.location.search + "' height='100' width='100%' >"
  ) 
</script>  

Цей код бере параметри url (? A = 1 & b = 2) зі сторінки, що містить iframe, і прикріплює їх до базової URL-адреси iframe. Це працює для моїх цілей.


document.writeеквівалентно використанню eval()- воно підлягає введенню сценарію! Використовуйте лише з особливою обережністю!
amphetamachine

1

Ви не можете встановити виправлення iframe src або заборонити подання javascript / форми, щоб змінити його розташування. Однак ви можете помістити скрипт в OnLoad сторінки і зміна дій кожної ланки динамічної.


1
$(".excel").click(function () {
    var t = $(this).closest(".tblGrid").attr("id");
    window.frames["Iframe" + t].document.location.href = pagename + "?tbl=" + t;
});

це те, що я використовую, для цього не потрібен jquery. у цьому конкретному сценарії для кожної таблиці, у мене є піктограма експорту Excel, це змушує прикріплений до цієї таблиці iframe завантажувати ту саму сторінку зі змінною в рядку запиту, яку шукає сторінка, і якщо знайдена відповідь виписує потік із excel mimeype і включає дані для цієї таблиці.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.