Расширение Mozilla для транслитерации деванагри в гуджарти - PullRequest
0 голосов
/ 20 марта 2011

Я создал расширение для кнопки Mozilla Firefox, которая транслитерует определенную веб-страницу. код кнопки вставляется в% appdata% из mozilla. код для button.js выглядит следующим образом

function doSomething()
{ 
    let url = "http://localhost/aaa/trial.asp";
  let request = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Components.interfaces.nsIXMLHttpRequest);
   request.onload = function(aEvent) {

    doc=gBrowser.contentDocument;
    doc.body.innerHTML = "<div>" + gBrowser.contentDocument.body.innerHTML  + "</div>";
    doc.body.innerHTML = "<div style='background-color: gray' >" + aEvent.target.responseText + "</div>"   + gBrowser.contentDocument.body.innerHTML;
    doc.body.innerHTML = gBrowser.contentDocument.body.innerHTML + "<div  id='in_trans_overlay'><a id='in_trans_lnk' href='javascript:hide(0); void 0;'>click here  to see the original page</a></div>" ;
    doc.getElementById("in_trans_overlay").style.left="0px";
    doc.getElementById("in_trans_overlay").style.top="0px";
    doc.getElementById("in_trans_overlay").style.position="fixed"; 
    doc.getElementById("in_trans_overlay").style.backgroundColor="blue";
    //doc.getElementById("in_trans_overlay").style.opacity="0.4";
    doc.getElementById("in_trans_overlay").style.width="100%";
    doc.getElementById("in_trans_overlay").style.zIndex="10";
    doc.getElementById("in_trans_lnk").style.color="white";
    //doc.getElementById("in_trans_lnk").style.opacity="1.0";

    doc.body.childNodes[1].style.display="none";

    hd=doc.getElementsByTagName("head");
    scpt=doc.createElement("script");
    scpt.setAttribute("type", "text/javascript");
    scpt.setAttribute("charset", "UTF-8");
    scpt.setAttribute("src", "http://localhost/aaa/hide.js");
    hd[0].appendChild(scpt);
   };
   request.onerror = function(aEvent) {
        window.alert("Error Status: " + aEvent.target.status );
   };

   request.open("POST", url, true);
   request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
   params = gBrowser.contentDocument.body.innerHTML;

   params = "inTransContent=" + encodeURIComponent(params);
   request.setRequestHeader("Content-length", params.length);
   request.setRequestHeader("Connection", "close");

   request.send(params);

}

этот код отправляет xmlhttprequest и выполняет код trial.asp.

trial.asp содержит следующий код

<% Dim xmlDoc 
Dim objNodeList
    Dim count

    set xmlDoc = Server.CreateObject("Msxml2.DOMDocument.6.0")

    xmlDoc.validateOnParse = False
    xmlDoc.async = False

    xmlDoc.loadXML("<div>" & Request.Form("inTransContent")   & "</div>")   

    If (xmlDoc.parseError.errorCode <> 0) Then
        Dim myErr
        Set myErr = xmlDoc.parseError
        Response.Write("<div><br><br><br>" & myErr.reason & "<br>" & myErr.line & "<br>" & myErr.srcText & "</div>")
    Else
          Set objNodeList = xmlDoc.documentElement.selectNodes("//text()")
          count = objNodeList.length

          For i = 1 To count 
               objNodeList(i-1).insertData 0, "XYZ " 
               objNodeList(i-1).insertData objNodeList(i-1).length, " XYZ" 
          Next 

          Response.Write(xmlDoc.documentElement.xml)
   End If

%>

этот код будет отправлять только те текстовые узлы, которые должны транслитерироваться, поскольку я не продвинулся много в цикле for, поэтому я заменил его на фиктивный, который добавляет xyz до и в конце. мне нужно конвертировать этот код asp, потому что я иду на asp.net. мне нужно преобразовать это в vb.net или c # код .. я вернусь к циклу for позже .. этот код должен стать файлом default.aspx в asp.net.

следующая вещь asp.net - мне нужен файл global.asax файл global.asax содержит этот код

    protected void Application_Start(object sender, EventArgs e)
    {
        sbyte[,] a = new sbyte[100, 100];
        sbyte[,] b = new sbyte[100, 100];
        int count = 0;
        XDocument docA = XDocument.Load("dev.xml");
        XDocument docB = XDocument.Load("guj.xml");
         var devanagriKeys = (from d in docA.Descendants("mapping")
                                              select new {
                                                  Key = d.Descendants("itrans").FirstOrDefault().Value,
                                                  Character = d.Descendants("character").FirstOrDefault().Value
                                              }).ToArray();
        var gujrathiKeys = (from g in docB.Descendants("mapping")
                                              select new {
                                                  Key = g.Descendants("itrans").FirstOrDefault().Value,
                                                  Character = g.Descendants("character").FirstOrDefault().Value
                                              }).ToArray();
        var crossReference = (from d in devanagriKeys
                              join g in gujrathiKeys on d.Key equals g.Key
                              select new {
                                    d.Key,
                                    Devanagri = d.Character,
                                    Gujrathi = g.Character
                                }).ToList();

этот код будет брать символы из сценария деванагри и сценария гуджрати и создавать список, используя итранс в качестве одного носителя, например, अ в итрансе - это время અ в гуджарати имеет тот же итранс поэтому будет создан список, хранящий अ и અ, потому что они имеют одинаковые itrans.

здесь мне нужно сохранить этот список в сеансе var, чтобы я мог использовать его в default.asp .. хотя я не могу понять это правильно.

Я сказал, что вернусь к циклу for в default.aspx, так что теперь в этом default.aspx мне нужно искать и заменять каждый текстовый узел деванагри на гуджарати и наоборот ..

Я также сбит с толку, потому что я использую сервер iis, поэтому я должен скопировать все файлы проекта asp.net в папку wwwroot в inetpub iis.

я буду благодарен, если кто-нибудь направит меня к этому !! Прошу прощения за большое количество кода ... я застрял сильно, поэтому мне действительно нужна помощь, если какие-либо вопросы по этому поводу, пожалуйста, не стесняйтесь писать спасибо !!!

1 Ответ

0 голосов
/ 20 марта 2011

Звучит так, будто вы хотите обмениваться элементами в переменных сеанса между вашей страницей ASP и страницей .NET .ASPX.Правильно ли я понял?

Рассмотрите эту статью: Как поделиться состоянием сеанса между классическим ASP и ASP.NET

Возможно, вам лучше преобразовать свой.ASP.NET. ASPX.Учитывайте ремонтопригодность вашего решения.

...