Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: opera::user_javascript_file insertAdjacentHTML
 
 автор: heed   (29.08.2010 в 21:28)   письмо автору
 
 

не пойму в какой кодировке править пользовательский скрипт.

, т.е я со страниц softtime.ru зашёл со строки меню
Tools -> quick preferences -> edit site preferences -> Scripting
и прописал для "User javascrippt files" папку C:\_FM\Opera_124\_my\softtime

положил туда такой скрипт softtime_ru.js
//по клику на тексте сообщения создаёт форму

re1=/\/read\.php\?id_forum=(\d+)&id_theme=(\d+)/;

if ( x_m1 = re1.exec(document.location))  {

x_cookie = document.cookie;
x_ar = (x_cookie) ? x_cookie.split(/; */): new Array();
//alert( x_ar )
x_user=''
x_pass=''
x_sid=''

for (z=0; z < x_ar.length; z++) {
 x_temp = x_ar[z].split('=')
 switch(x_temp[0]){
 case 'current_author':
    x_user    =x_temp[1]
 break;
 case 'wrdp':
    x_pass    =x_temp[1]
 break;
 case 'PHPSESSID':
    x_sid    =x_temp[1]
 break;
 }
 }
alert( x_user+'-'+x_pass+'-'+x_sid )

x_posts = document.getElementsByTagName("P")
for ( i=0; i<x_posts.length; i++) {
    if (x_posts.className != "posttext") continue    
    x_posts[i].onclick = "answer_form(this)"
}

function   answer_form(elmnt) {
    re3=/<A\s+href=['"]?addpost\.php.+&id_post=(\d+)/
    x_m3 = re3.exec(((elmnt.parentElement).parentElement).parentElement.lastChild.innerHTML)
    if (!x_m3) return;
form_txt='\
<div style="border:solid 1px grey; width:80%">\
<form action="addpost.php" enctype="multipart/form-data" name="form" method="post">\
<input type="hidden" name="personally" value="">\
<input type="hidden" name="sid_add_theme" value="'+x_sid+'">\
Ваше&nbsp;имя:<br/>\
<input size="25" type="text" name="author" size="61" maxlength="100" value="'+x_user+'"><br/>\
Пароль:<br/>\
<input size="25" type="password" name="pswrd" size="61" maxlength="100" value="'+x_pass+'">\
<br/>\
<div class="blockremark"><p>\
<a href="#" onClick="javascript:tag(\"\", \"\"); return false;" >[b][/b]</a> \
<a href="#" onClick="javascript:tag(\"[i]\", \"
\"); return false;" >[i][/i]</a> \
<a href="#" onClick="javascript:tag(\"[url]\", \"[/url]\"); return false;" >[url][/url]</a>\
</div>\
Сообщение:<br>\
<textarea class="input" style="padding-right: 10px;" cols="90" rows="15" name="message">\
</textarea><br/>\
Прикрепить:<br/>\
<input class="input" type="file" name="attach" size="82"><br/>\
<input class="button" type="submit" name="send" value="Отправить">\
<input type="hidden" name="id_theme" value="'+x_m1[2]+'">\
<input type="hidden" name="id_post" value="'+x_m3[1]+'">\
<input type="hidden" name="id_forum" value="'+x_m1[1]+'">\
</table></form></div>';

    elmnt.insertAdjacentHTML ('afterEnd',form_txt)
} // end function
} //end if

и не могу получить русские надписи с полям формы

это вообще возможно , с помощью insertAdjacentHTML и не напрягая браузер перекодировкой ?
или подскажите как сделать пооптимальнее ?

//подсветка жестоко режет текст, если как php подсветить не php

  Ответить  
 
 автор: heed   (29.08.2010 в 21:43)   письмо автору
 
   для: heed   (29.08.2010 в 21:28)
 

не правится сообщение, там из цикла вырезало [i]

for ( i=0; i<x_posts.length; i++) {
if (x_posts[i].className != "posttext") continue
x_posts[i].onclick = "answer_form(this)"
}

  Ответить  
 
 автор: heed   (30.08.2010 в 18:16)   письмо автору
 
   для: heed   (29.08.2010 в 21:28)
 

похоже ни одна кодировка не подошла. 9.24 у меня опера
ну да ладно :) буду юзать с иностранными буквами
... не нашёл чем кроме insertAdjacentHTML вставить сразу большой кусок страницы
Извиняюсь за корявый код и если защемил какие-нибудь авторские права ,) просто мне так слегка удобнее юзать форум , и чуть-чуть экономичнее .

поулучшил код насколько смог :)
    re1=/\/read\.php\?id_forum=(\d+)&id_theme=(\d+)/;
if ( x_m1 = re1.exec(document.location)) { //alert( x_m1[1]+'-'+x_m1[2])

//куки
    x_cookie = document.cookie;
    x_ar = (x_cookie) ? x_cookie.split(/; */): new Array();
    x_user=''
    x_pass=''
    x_sid=''
    for (z=0; z < x_ar.length; z++) {
        x_temp = x_ar[z].split('=')
        switch(x_temp[0]){
            case 'current_author':
                x_user    =x_temp[1]
            break;
            case 'wrdp':
                x_pass    =x_temp[1]
            break;
            case 'PHPSESSID':
                x_sid    =x_temp[1]
            break;
        }
    } //alert( x_user+'-'+x_pass+'-'+x_sid)

    x_status = new Array();
    document.body.onload="x_init()"
    
//функции

function x_init(){
//сообщения
x_temp= '';
    x_posts = document.getElementsByTagName("P")
    for ( x=0, z=0; x<x_posts.length; x++) {
        if (x_posts[x].className != "posttext") continue    
        x_posts[x].onclick = "answer_form(this, "+z+")"
        x_temp += '0,'
        z++
    }
    x_status= x_temp.split(','); //alert( x_status )
    
}

    function ins_tag(elm, ins_text) {
        x_elm = elm.parentElement.nextSibling
        if (ins_text == "quote") {
y_text = elm.parentElement.parentElement.parentElement.previousSibling.previousSibling.innerText
            x_elm.value += '>[i]'+ y_text.replace(/\r\n/g, "") +'['+'/i]\n'; 
        }
        else {
            var str     = x_elm.value; 
            var start    = x_elm.selectionStart; 
            var length    = x_elm.selectionEnd - x_elm.selectionStart; 
            x_elm.value = str.substr(0, start) + '['+ins_text+']' + str.substr(start, length) +
                '[/'+ins_text+']'+ str.substr(start + length); 
        }
    }
    
    
    function rm_form(elmnt, num) {
        if (x_status[num] != '1') return;
        elmnt.nextSibling.removeNode(true)
        elmnt.removeNode(true)
        x_status[num] = '0'
    }

    function   answer_form(elmnt, x_num) {
        if (x_status[x_num] != '0') return;
        re3=/<A\s+href=['"]?addpost\.php.+&id_post=(\d+)/i
        x_m3 = re3.exec(elmnt.parentElement.parentElement.nextSibling.innerHTML)
//            alert(elmnt.parentElement.parentElement.nextSibling.innerHTML+'\n\n'+x_m3[1])
        if (!x_m3) return;

form_txt = '\
<div style="border:solid 1px grey; width:100%; padding:5px 10px">\n\
<style>\n\
 form h4 { float:left; background:#CCC; padding:2px 1ex; margin:2px; 0;\
    border:double 3px #999; border-bottom:none;}\n\
 textarea {padding:2px 10px; width:100%; margin-top:0;} \n\
 input[type=submit] {margin:1ex 3em; font-size: 150%;}\n\
</style>\n\
<form action="addpost.php" enctype="multipart/form-data" name="x_form" method="post">\n\
<input type="hidden" name="personally" value="">\n\
<input type="hidden" name="sid_add_theme" value="'+x_sid+'">\n\
username:<br/>\n\
<input size="25" type="text" name="author" size="61" maxlength="100" value="'+x_user+'"><br/>\n\
password:<br/>\n\
<input size="25" type="text" name="pswrd" size="61" maxlength="100" value="'+x_pass+'">\n\
<br/>текст:\
<div>\
<h4 style="float:right; clear:both;" onclick="ins_tag(this, \'quote\')">[:quote:]</h4><br/><hr/>\
<h4 onclick="ins_tag(this, \'code\')">[:code:][:/code:]</h4>\
<h4 onclick="ins_tag(this, \'b\')">[:b:][:/b:]</h4>\n\
<h4 onclick="ins_tag(this, \'i\')">[:i:][:/i:]</h4>\n\
<h4 onclick="ins_tag(this, \'s\')">[:s:][:/s:]</h4>\n\
<h4 onclick="ins_tag(this, \'sub\')">[:sub:][:/sub:]</h4>\n\
<h4 onclick="ins_tag(this, \'sup\')">[:sup:][:/sup:]</h4>\n\
<h4 onclick="ins_tag(this, \'url\')">[:url:][:/url:]</h4>\n\
</div><textarea cols="90" rows="15" name="message">\n\
</textarea>\
<br/>\n\
file:<br/>\n\
<input class="input" type="file" name="attach" size="82"><br/>\n\
<input type="submit" name="send" value="Send">\n\
<input type="hidden" name="id_theme" value="'+x_m1[2]+'">\n\
<input type="hidden" name="id_post" value="'+x_m3[1]+'">\n\
<input type="hidden" name="id_forum" value="'+x_m1[1]+'">\n\
</form></div>\n';
        elmnt.insertAdjacentHTML ('afterEnd',form_txt)
        elmnt.insertAdjacentHTML('afterEnd' ,'<h2 onMouseUp="rm_form(this, '+
            x_num+' )" style="padding:2px 1ex; background:darkred">Remove</h2>')
        x_status[x_num] = '1'
    } // end function
} //end if
по возможности прислушаюсь к любым комментариям по поводу кода,) в javascript'е мало чего понимаю.

  Ответить  
 
 автор: .heed   (24.02.2012 в 18:12)
4.3 Кб
 
   для: heed   (30.08.2010 в 18:16)
 

пофиксил но не очень .)

похоже elmnt.removeNode() больше нет в опере
предлагается что-то типа elmnt.parentNode.removeChild(elmnt)

по крайней мере в 12.00 alpha , если ставить её как версию для переносных носителей путь к user javascript можно сделать
просто "profile\scripts\user"
вместо например j:\P\Opera_x32\profile\scripts\user

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования