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.