Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   innerHTML <script> (https://javascript.ru/forum/misc/27381-innerhtml-script.html)

bpystep 11.04.2012 15:54

innerHTML <script>
 
var bbcode = document.getElementById('insert_bbcode');
bbcode.style.display = "block";
bbcode.style.border = "1px solid #ff0000";
bbcode.innerHTML = "<script>addBBcodeBar('paper_txt')</script>"; // не получается вставить


<div id="insert_bbcode" style="display:none;"></div>


почему не вставляется <script>...</script> вместо него пусто, тем не менее если использовать innerText, то всавить, но это не HTML... как вставить?

Skipp 11.04.2012 16:03

var script = document.createElement("script");
script.src = "путь к скрипту";
script.type = "text/javascript";
document.getElementById('insert_bbcode').appendChild(script);

T-sh 11.04.2012 16:10

то, что вы хотите получить:
<html>
<head>
</head>
<body>
<div id="insert_bbcode" style="display:none; border: none;"></div>
<script>
var bbcode = document.getElementById('insert_bbcode');
bbcode.style.display = "block";
bbcode.style.border = "1px solid #ff0000";
bbcode.innerHTML = ('\<script\>addBBcodeBar(\"paper_txt\")\<\/script\>');
</script>
</body>
</html>


но работать вставленный скрипт всё равно не будет, ибо страница уже загружена.

bpystep 11.04.2012 16:22

да, я так и делал, скрипт не работал, вот я и хочу попробовать как нибудь его подгрузить. пробую с createElement, еще наткнулся в инете на eval, можете что-нибудь подсказать про eval?

Skipp 11.04.2012 16:23

Старайтесь eval не использовать, да и тут негде и незачем его использовать.

T-sh 11.04.2012 16:25

Цитата:

Сообщение от bpystep (Сообщение 168325)
да, я так и делал, скрипт не работал, вот я и хочу попробовать как нибудь его подгрузить. пробую с createElement, еще наткнулся в инете на eval, можете что-нибудь подсказать про eval?

что выполняет функция addBBcodeBar('paper_txt')?

может, легче будет получить её результат и уже его вставить в нужный блок?

bpystep 11.04.2012 16:41

function addBBcodeBar(obj) {
	document.write('<div class="toolbar">');
	document.write('<img class="button" src="images/bbcode/bold.gif" onClick="addTags(\'[b]\',\'[/b]\','+obj+')">');
    document.write('<img class="button" src="images/bbcode/italic.gif" onClick="addTags(\'[i]\',\'[/i]\','+obj+')">');
	document.write('<img class="button" src="mages/bbcode/underline.gif" onClick="addTags(\'[u]\',\'[/u]\','+obj+')">');
	document.write('<img class="button" src="images/bbcode/strike.gif" onClick="addTags(\'[s]\',\'[/s]\','+obj+')">');
	document.write('<img class="button" src="images/bbcode/link.gif" onClick="addURL('+obj+')">');
	document.write('<img class="button" src="images/bbcode/image.gif" onClick="addImage('+obj+')">');
	document.write('<img class="button" src="images/bbcode/quote.gif" onClick="addTags(\'[quote]\',\'[/quote]\','+obj+')">');
    document.write('</div>');
}

bpystep 11.04.2012 16:43

короче добавляет картинки с bb-кодами

T-sh 11.04.2012 17:07

ну вот. собирай это всё в одну строку и выводи в нужный блок :)

bpystep 11.04.2012 17:14

по-моему это как то глупо...:cray:

T-sh 11.04.2012 17:20

Цитата:

Сообщение от bpystep (Сообщение 168360)
по-моему это как то глупо...:cray:

почему?? перепиши функцию так, чтобы она не выводила на страницу все эти картинки, а просто возвращала одной строкой...

а потом
var a = newfunction();
var b  =  document.getElementById('insert_bbcode');
b.innerHTML(a);

Раед 11.04.2012 17:27

Цитата:

Сообщение от T-sh
b.innerHTML(a);

кхе-кхе. с каких это пор иннерХТМЛ стал ф-ией

Раед 11.04.2012 17:28

Цитата:

Сообщение от Skipp
Старайтесь eval не использовать

Часто замечаю эту фразу и некогда нет никаких пояснений, почему eval - это плохо???

T-sh 11.04.2012 17:33

Цитата:

Сообщение от Раед (Сообщение 168368)
кхе-кхе. с каких это пор иннерХТМЛ стал ф-ией

а вот когда у меня крыша едет от трехчасового распиливания jquery :) тогда такую фигню и пишу :) конечно, innerHTML = ...

bpystep 11.04.2012 17:50

<td><div id="[_id_comm]" class="div_script"><script>edToolbar('paper_txt');</script></div></td>


а в JS перебрал по тегу div
var elems = document.getElementsByTagName('div');
		for (var i=0; i<elems.length; i++) {
			if (elems[i].id == [_id_comm])
				elems[i].style.display = 'block';
		}

.div_script {
	padding-left: 6px;
	display: none;
}

T-sh 11.04.2012 18:03

О_О а смысл в этом какой? :)

и зачем перебирать все div'ы, когда уже известен id?

9xakep 11.04.2012 18:13

Раед,
мне объяснили тут так: что любой человек, может в евале что угодно написать, и этот код выполниться, так как будто бы он для этого и предназначался, короче обернется все это плохими последствиями))

bpystep 11.04.2012 18:16

id неизвестен, просто это неполный код.
смысл в том что это для редактирования комментариев.

я могу конечно целиком все скинуть, но это слишком громоздкий код.
но если интересно могу скинуть.

Раед 11.04.2012 18:19

Цитата:

Сообщение от 9xakep
и этот код выполниться, так как будто бы он для этого и предназначался

а для чего по вашему предназначен код?
Цитата:

Сообщение от 9xakep
любой человек, может в евале что угодно написать

интересно, каким образом он в моём коде может что-то написать. И потом, если он что-то напишет, это же локально выполниться => если что-то не так - его проблемы
Цитата:

Сообщение от 9xakep
короче обернется все это плохими последствиями))

и какими же например?

T-sh 11.04.2012 18:23

Цитата:

Сообщение от Раед (Сообщение 168396)
а для чего по вашему предназначен код?

интересно, каким образом он в моём коде может что-то написать. И потом, если он что-то напишет, это же локально выполниться => если что-то не так - его проблемы

и какими же например?

может, отголоски серверных языков сказываются? :)

в самом деле, если не используются жесткие связки с сервером, eval — настолько же безобиден, как и document.write и прочие :)

bpystep 11.04.2012 20:25

почему то перестали работать блоки URL и IMG, вернуля к вашему варианту

var str0 = '<div class="tag_a" id="window_tags_a"><div class="input"><input id="input_link_a" type="text" value="Введите ссылку"/><br><input id="input_text_a" type="text" value="Введите текст ссылки"/><div id="window_supmit_a" onClick="addURL(\'paper_txt\',1)"><p id="p_sub">ОК</p></div></div></div>';
				var str1 = '<div class="tag_img" id="window_tags_img"><div class="input"><input id="radio_pos" type="hidden" value=""/><span id="radio_1" style="font-weight:100;cursor:pointer;color:#000;" onClick="positionImg(\'left\');">слева</span>&nbsp&nbsp&nbsp&nbsp&nbsp<span id="radio_2" style="font-weight:100;cursor:pointer;color:#000;" onClick="positionImg(\'center\');">центр</span>&nbsp&nbsp&nbsp&nbsp&nbsp<span id="radio_3" style="font-weight:100;cursor:pointer; color:#000;" onClick="positionImg(\'right\');">справа</span><input id="input_link_img" name="input_link_img" style="width:220px;" type="text" value="Введите ссылку"/><div id="window_supmit_img" onClick="addImage(\'paper_txt\',1)"><p id="p_sub">ОК</p></div></div></div>';
				var str2 = '<div class="toolbar">';
				var str3 = '<img class="button" src="templates/css/images/bbcode/bold.gif" title="Жирный" onMouseOver="changeImg(this,1)" onMouseOut="changeImg(this,0)" onClick="addTags(\'[b]\',\'[/b]\',\'paper_txt\')">';
				var str4 = '<img class="button" src="templates/css/images/bbcode/italic.gif" title="Курсив" onMouseOver="changeImg(this,1)" onMouseOut="changeImg(this,0)" onClick="addTags(\'[i]\',\'[/i]\',\'paper_txt\')">'
				var str5 = '<img class="button" src="templates/css/images/bbcode/underline.gif" title="Подчеркнутый" onMouseOver="changeImg(this,1)" onMouseOut="changeImg(this,0)" onClick="addTags(\'[u]\',\'[/u]\',\'paper_txt\')">';
				var str6 = '<img class="button" src="templates/css/images/bbcode/strike.gif" title="Перечеркнутый" onMouseOver="changeImg(this,1)" onMouseOut="changeImg(this,0)" onClick="addTags(\'[s]\',\'[/s]\',\'paper_txt\')">';
				var str7 = '<img class="button" src="templates/css/images/bbcode/link.gif" title="URL-адрес" onMouseOver="changeImg(this,1)" onMouseOut="changeImg(this,0)" onClick="addURL(\'paper_txt\')">';
				var str8 = '<img class="button" src="templates/css/images/bbcode/image.gif" title="Картинка" onMouseOver="changeImg(this,1)" onMouseOut="changeImg(this,0)" onClick="addImage(\'paper_txt\')">';
				var str9 = '<img class="button" src="templates/css/images/bbcode/quote.gif" title="Цитата" onMouseOver="changeImg(this,1)" onMouseOut="changeImg(this,0)" onClick="addTags(\'[quote]\',\'[/quote]\',\'paper_txt\')">';
				var str10 = '</div>';
				
				var str = str0+str1+str2+str3+str4+str5+str6+str7+str8+str9+str10;


некрасивый говнокод(((

T-sh 11.04.2012 22:16

<html>
<head>
<script>
function createStr(){
var str ='';
str += '<div class="tag_a" id="window_tags_a"><div class="input"><input id="input_link_a" type="text" value="Введите ссылку"/><br><input id="input_text_a" type="text" value="Введите текст ссылки"/><div id="window_supmit_a" onClick="addURL(\'paper_txt\',1)"><p id="p_sub">ОК</p></div></div></div>'; 
str += '<div class="tag_img" id="window_tags_img"><div class="input"><input id="radio_pos" type="hidden" value=""/><span id="radio_1" style="font-weight:100;cursor:pointer;color:#000;" onClick="positionImg(\'left\');">слева</span>&nbsp&nbsp&nbsp&nbsp&nbsp<span id="radio_2" style="font-weight:100;cursor:pointer;color:#000;" onClick="positionImg(\'center\');">центр</span>&nbsp&nbsp&nbsp&nbsp&nbsp<span id="radio_3" style="font-weight:100;cursor:pointer; color:#000;" onClick="positionImg(\'right\');">справа</span><input id="input_link_img" name="input_link_img" style="width:220px;" type="text" value="Введите ссылку"/><div id="window_supmit_img" onClick="addImage(\'paper_txt\',1)"><p id="p_sub">ОК</p></div></div></div>';
str += '<div class="toolbar">';
str += '<img class="button" src="templates/css/images/bbcode/bold.gif" title="Жирный" onMouseOver="changeImg(this,1)" onMouseOut="changeImg(this,0)" onClick="addTags(\'[b]\',\'[/b]\',\'paper_txt\')">';
str += '<img class="button" src="templates/css/images/bbcode/italic.gif" title="Курсив" onMouseOver="changeImg(this,1)" onMouseOut="changeImg(this,0)" onClick="addTags(\'[i]\',\'[/i]\',\'paper_txt\')">'
str += '<img class="button" src="templates/css/images/bbcode/underline.gif" title="Подчеркнутый" onMouseOver="changeImg(this,1)" onMouseOut="changeImg(this,0)" onClick="addTags(\'[u]\',\'[/u]\',\'paper_txt\')">';
str += '<img class="button" src="templates/css/images/bbcode/strike.gif" title="Перечеркнутый" onMouseOver="changeImg(this,1)" onMouseOut="changeImg(this,0)" onClick="addTags(\'[s]\',\'[/s]\',\'paper_txt\')">';
str += '<img class="button" src="templates/css/images/bbcode/link.gif" title="URL-адрес" onMouseOver="changeImg(this,1)" onMouseOut="changeImg(this,0)" onClick="addURL(\'paper_txt\')">';
str += '<img class="button" src="templates/css/images/bbcode/image.gif" title="Картинка" onMouseOver="changeImg(this,1)" onMouseOut="changeImg(this,0)" onClick="addImage(\'paper_txt\')">';
str += '<img class="button" src="templates/css/images/bbcode/quote.gif" title="Цитата" onMouseOver="changeImg(this,1)" onMouseOut="changeImg(this,0)" onClick="addTags(\'[quote]\',\'[/quote]\',\'paper_txt\')">';
str += '</div>';
return str;
}

function addImg(elemId){
var a = document.getElementById(elemId);
a.innerHTML = createStr();
}

</script>
</head>
<body>
<div id='block'>Сюда вставятся картинки</div>
<br>
<a href='#' onclick="addImg('block');">Вставить</a>
</body>
</html>

T-sh 11.04.2012 22:18

по-моему, всё работает :)

bpystep 11.04.2012 22:22

да работать то работает, но если вдруг захочется добавить какой то еще bb-код, то придется менять и там и там и там... а не в одном месте(( это удручает

T-sh 11.04.2012 22:31

ok) тогда так:

<html>
<head>
<script>
function createStr(elemId){

var str ='';
str += '<div class="tag_a" id="window_tags_a"><div class="input"><input id="input_link_a" type="text" value="Введите ссылку"/><br><input id="input_text_a" type="text" value="Введите текст ссылки"/><div id="window_supmit_a" onClick="addURL(\'paper_txt\',1)"><p id="p_sub">ОК</p></div></div></div>'; 
str += '<div class="tag_img" id="window_tags_img"><div class="input"><input id="radio_pos" type="hidden" value=""/><span id="radio_1" style="font-weight:100;cursor:pointer;color:#000;" onClick="positionImg(\'left\');">слева</span>&nbsp&nbsp&nbsp&nbsp&nbsp<span id="radio_2" style="font-weight:100;cursor:pointer;color:#000;" onClick="positionImg(\'center\');">центр</span>&nbsp&nbsp&nbsp&nbsp&nbsp<span id="radio_3" style="font-weight:100;cursor:pointer; color:#000;" onClick="positionImg(\'right\');">справа</span><input id="input_link_img" name="input_link_img" style="width:220px;" type="text" value="Введите ссылку"/><div id="window_supmit_img" onClick="addImage(\'paper_txt\',1)"><p id="p_sub">ОК</p></div></div></div>';
str += '<div class="toolbar">';
str += '<img class="button" src="templates/css/images/bbcode/bold.gif" title="Жирный" onMouseOver="changeImg(this,1)" onMouseOut="changeImg(this,0)" onClick="addTags(\'[b]\',\'[/b]\',\'paper_txt\')">';
str += '<img class="button" src="templates/css/images/bbcode/italic.gif" title="Курсив" onMouseOver="changeImg(this,1)" onMouseOut="changeImg(this,0)" onClick="addTags(\'[i]\',\'[/i]\',\'paper_txt\')">'
str += '<img class="button" src="templates/css/images/bbcode/underline.gif" title="Подчеркнутый" onMouseOver="changeImg(this,1)" onMouseOut="changeImg(this,0)" onClick="addTags(\'[u]\',\'[/u]\',\'paper_txt\')">';
str += '<img class="button" src="templates/css/images/bbcode/strike.gif" title="Перечеркнутый" onMouseOver="changeImg(this,1)" onMouseOut="changeImg(this,0)" onClick="addTags(\'[s]\',\'[/s]\',\'paper_txt\')">';
str += '<img class="button" src="templates/css/images/bbcode/link.gif" title="URL-адрес" onMouseOver="changeImg(this,1)" onMouseOut="changeImg(this,0)" onClick="addURL(\'paper_txt\')">';
str += '<img class="button" src="templates/css/images/bbcode/image.gif" title="Картинка" onMouseOver="changeImg(this,1)" onMouseOut="changeImg(this,0)" onClick="addImage(\'paper_txt\')">';
str += '<img class="button" src="templates/css/images/bbcode/quote.gif" title="Цитата" onMouseOver="changeImg(this,1)" onMouseOut="changeImg(this,0)" onClick="addTags(\'[quote]\',\'[/quote]\',\'paper_txt\')">';
str += '</div>';

switch (elemId){
	case 'block2':  // для какого блока
	     str += 'Новые коды';  // какие коды
		 str += 'Новые коды';
		 str += 'Новые коды';
		 str += 'Новые коды';
	break;
};
document.getElementById(elemId).innerHTML = str;
}
</script>
</head>
<body>
<div id='block' style="background-color:red">Сюда вставятся картинки</div>
<br>
<div id='block2' style="background-color:green">Сюда вставятся новые коды</div>
<a href='#' onclick="createStr('block');">Вставить старые bbcode</a>
<a href='#' onclick="createStr('block2');">Вставить новые bbcode</a>
</body>
</html>

T-sh 11.04.2012 22:32

и можно добавлять что угодно, для каждого блока новые коды или редактировать старые и т.д.

codingfighter 11.04.2012 23:09

можешь с помощью jquery .html вставить. Там выполнятся скрипты.

bpystep 12.04.2012 15:53

Цитата:

Сообщение от codingfighter (Сообщение 168477)
можешь с помощью jquery .html вставить. Там выполнятся скрипты.

пока что не дошел до jQuery


Часовой пояс GMT +3, время: 02:55.