как заставить этот texarea javascript работать в других браузерах, кроме Internet Explorer

#javascript

#javascript

Вопрос:

Пожалуйста, кто-нибудь может мне помочь в этом

это код JavaScript, который вставляет определенный bbcode, скажем, [b] [/ b] в поле текстовой области, когда пользователь нажимает на него, как в V Bulletin и форумах SMF, когда пользователь нажимает на изображение с B [b] [/ b], которое появляется в форме текстовой области,

теперь я заставил свой работать, хотя я не силен в JavaScript, но проблема в том, что он работает только в INTERNET EXPLORER и не работает в OPERA и Mozilla, поэтому мне нужна помощь, чтобы заставить его работать в другом браузере, кроме IE

 <HTML>
 <Head>
 <script type="text/javascript">

 var isSelected = false;

 function copySelection(workArea){

 workArea.workText = document.selection.createRange();
 isSelected = true;
 }

 function wrapInTags(workArea,isTag){

 if (isSelected)
 {
 workArea.workText.text = "[" isTag "]" workArea.workText.text "[/" isTag "]";
 if (workArea.workText.text==''){isSelected=false;workArea.focus()}
 }
 }

 function AddURL(workArea){

 var AddURL="";
 var txt="";


 txt=prompt("Enter URL for the link.","http://");
 AddURL="[.url=" txt "]";
 AddURL2="[./url]";


 if (isSelected)
 {
 workArea.workText.text = AddURL workArea.workText.text AddURL2;
 if (workArea.workText.text==''){isSelected=false;workArea.focus()}
 }

 }

 </Script>
 </Head>


 <Body>
 <Form name='Form1' method=post action='process.php'>
 <textarea name='area1' cols='40' rows='4' onselect="copySelection(this)"></textarea><br>
 <input type=button value='Italic' onclick="wrapInTags(this.form.area1,'i')">
 <input type=button value='Bold' onclick="wrapInTags(this.form.area1,'b')">
 <input type=button value='Underline' onclick="wrapInTags(this.form.area1,'u')">
 <input type=button value='Link' onclick="AddURL(this.form.area1)">
 <br><br>
 <input type=submit value='Submit'>
 </Form>


 </Body>
 </HTML>
 

Комментарии:

1. проверьте это, это может помочь forums.mozillazine.org/viewtopic.php?f=38amp;t=601831

Ответ №1:

document.selection и все его методы и свойства доступны только для IE, но есть и другие вещи, которые хорошо работают в других браузерах.

 var isSelected = false;

function copySelection(workArea){
    workArea.workText = document.selection ? document.selection.createRange() : {text:workArea.value.substring(workArea.selectionStart,workArea.selectionEnd)};
    workArea.offsetSelection = workArea.selectionStart;
    isSelected = true;
}


function wrapInTags(workArea,isTag){
    if (isSelected)
        {
        if(document.selection){ 
            workArea.workText.text = "[" isTag "]" workArea.workText.text "[/" isTag "]";
        } else {        
            workArea.value = 
                workArea.value.substring(0,workArea.offsetSelection)
                  "[" isTag "]" workArea.workText.text "[/" isTag "]" 
                  workArea.value.substring(workArea.offsetSelection workArea.workText.text.length)
        }


        if (workArea.workText.text==''){
            isSelected=false;workArea.focus()
        }
    }
}


function AddURL(workArea){
    var AddURL="";
    var txt="";

    txt=prompt("Enter URL for the link.","http://");
    AddURL="[.url=" txt "]";
    AddURL2="[./url]";

    if (isSelected) {
        if(document.selection){ 
            workArea.workText.text = AddURL workArea.workText.text AddURL2;
        } else {
            workArea.value = 
                workArea.value.substring(0,workArea.offsetSelection)
                   AddURL  workArea.workText.text  AddURL2
                  workArea.value.substring(workArea.offsetSelection workArea.workText.text.length)
        }

        if (workArea.workText.text==''){
            isSelected=false;workArea.focus()
        }
    }

}
 

Решение, на которое указал Дэвид, также работает хорошо.