Подскажите как удалить iframe с заменой на div
Всем привет,
подскажите как удалить все <iframe> на странице, если атрибут "src" содержит в ссылке определенное слово например "google" и заменить его на <div> |
Можешь попробовать вот так
<html> <head> </head> <body> <iframe src="https://google.ru" num=1></iframe> <iframe src="google" num=2></iframe> <iframe src="http://javascript.ru"></iframe> <iframe src="https://google.com" num=3></iframe> <div><iframe src="https://google.net" num=4></iframe></div> <iframe src="HTTPS://GOOGLE.INFO" num=5></iframe> <script> (function(){ var text=document.body.innerHTML var re=/<iframe[^>]+google[^>]+>[^>]*<\/iframe>/gi text=text.replace(re, "<div>text here</div>") document.body.innerHTML=text })() </script> </body> </html> Только протестируй хорошенько. Вариант хреновый, конечно, перерисовывается вся страница, но для однократных вызовов пойдет, если заработает. И жди, что настоящие спецы ниже подскажут:), а я нуб, прислушиваться не стоит:) |
(function() { var frames = window.frames; if(frames[0]) { var div = document.createElement('div'), i; div.innerHTML = 'Содержимое дива'; for(i=0; i<frames.length; i++) { frames[i].parentNode.replaceChild(div, frames[i]); } } })(); |
Цитата:
Поиск по google: document.querySelectorAll('iframe[src*="google"]') |
danik.js, блин, что-то я не так походу вник.
(function() { var frames = document.querySelectorAll('iframe[src*="google"]'); if(frames[0]) { var div = document.createElement('div'), i; div.innerHTML = 'Содержимое дива'; for(i=0; i<frames.length; i++) { frames[i].parentNode.replaceChild(div, frames[i]); } } })(); |
Ruslan_xDD,
Я типа того тоже пробовал, че-то не работает <html> <head> </head> <body> <iframe src="https://google.ru" num=1></iframe> <iframe src="google" num=2></iframe> <iframe src="http://javascript.ru"></iframe> <iframe src="https://google.com" num=3></iframe> <div><iframe src="https://google.net" num=4></iframe></div> <iframe src="HTTPS://GOOGLE.INFO" num=5></iframe> <script> (function() { var frames = document.querySelectorAll('iframe[src*="google"]'); if(frames[0]) { var div = document.createElement('div'), i; div.innerHTML = 'Содержимое дива'; for(i=0; i<frames.length; i++) { frames[i].parentNode.replaceChild(div, frames[i]); } } })(); </script> </body> </html> |
Ruslan_xDD, и даже по точным совпадениям не работает
<html> <head> </head> <body> <iframe src="google" num=1></iframe> <iframe src="google" num=2></iframe> <iframe src="http://javascript.ru"></iframe> <iframe src="google" num=3></iframe> <div><iframe src="google" num=4></iframe></div> <iframe src="GOOGLE" num=5></iframe> <script> (function() { var frames = document.querySelectorAll('iframe[src*="google"]'); if(frames[0]) { var div = document.createElement('div'), i; div.innerHTML = 'Содержимое дива'; for(i=0; i<frames.length; i++) { frames[i].parentNode.replaceChild(div, frames[i]); } } })(); </script> </body> </html> |
Цитата:
Пробовала так div.className( 'class_1 class_2' ) и так div.addClass( 'class_1 class_2' ) что-то не получается... |
Цитата:
|
$(function() {
........................ }); Я вот так пробовала :) |
Цитата:
|
Так это же как бы форум яваскрипта, изначально предполагается что просьба о помощи будет иметь отношение к ява...
Так сейчас то у вас заработало? |
Цитата:
У меня работает. Firefox 32. |
Прошу прощения, я не разбираюсь...
Главное что у меня заработал предложенный вариант решения, кстати я не испортила оболочку функции поставив $ ? И все еще актуален вопрос с добавлением класса к создаваемому элементу div. А чем будет отличатся решение задачи в квери написании от этого варианта? |
Да и у меня работает в хроме и ie8 в ff не проверяла
|
danik.js,
Проверь пожалуйста вот с этим примером, http://javascript.ru/forum/misc/5088...tml#post335885 может там с кодом что-не так? Или, может быть, это работает только с айфреймами 1-го уровня вложенности только. Я чет вообще не пойму. |
danik.js,
Щас кстати заметил, что у меня там закрывающий тег скрипт не подсвечивается, там где-то что-то экранируется, возможно. |
Цитата:
|
Цитата:
И че за странная проверка if (frames[0]) ? Адекватно тестят так: if (frames.length > 0) |
<iframe src="https://google.ru" num=1></iframe> <iframe src="google" num=2></iframe> <iframe src="http://javascript.ru"></iframe> <iframe src="https://google.com" num=3></iframe> <div><iframe src="https://google.net" num=4></iframe></div> <iframe src="HTTPS://GOOGLE.INFO" num=5></iframe> <script src="http://code.jquery.com/jquery-latest.min.js"></script> <script> $('iframe[src*="google"]').each(function() { var div = $('<div/>', {'class': 'Bla bla', html: 'Содержимое дива'}); $(this).replaceWith(div); }); </script> |
danik.js спасибо все работает, как я поняла этот вариант уже на квери
проверила в хром, опера, ff, ie8 - везде работает всем ответившим спасибо, отдельный чмок для danik.js |
Цитата:
div.className = 'class_1 class_2'; |
Часовой пояс GMT +3, время: 01:15. |