【问题标题】:mozilla extension for transliteration of devanagri to gujarti将梵文音译为古吉拉特语的 Mozilla 扩展
【发布时间】:2023-03-27 20:23:01
【问题描述】:

我为 mozilla firefox 按钮创建了一个扩展,它将音译特定的网页。 按钮代码粘贴在mozilla的%appdata%中。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 循环中没有取得太大进展,所以我用 dummy 替换了它。它在之前和结尾附加了 xyz。我需要转换这个 asp 代码,因为我要去 asp.net。我需要将其转换为 vb.net 或 c# 代码..我稍后会回到 for 循环..此代码应成为 asp.net 中的 default.aspx 文件。

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 作为一种媒介创建一个列表,例如 अ 在 itrans 中是一段时间 અ 在古吉拉特语中具有相同的 itrans a 因此将创建一个存储 अ 和 અ 的列表,因为它们具有相同的 itrans。

在这里,我需要将此列表内容存储在会话变量中,以便我可以在 default.asp 中使用它。 不过,我无法正确解决这个问题。

我告诉过我会回到 default.aspx 的 for 循环,所以现在在这个 default.aspx 中我必须搜索并将 devanagri 的每个文本节点替换为古吉拉特语,反之亦然..

我也很困惑,因为我使用的是iis服务器,所以我应该将asp.net的所有项目文件复制到iis的inetpub的wwwroot文件夹中。

如果有人指导我,我将不胜感激!我很抱歉有很多代码..我被卡住了,所以我真的需要帮助,如果对此有任何疑问,请随时发布谢谢!!!

【问题讨论】:

    标签: c# asp.net mozilla


    【解决方案1】:

    听起来您想在 ASP 页面和 .NET .ASPX 页面之间共享会话变量中的项目。我理解正确吗?

    考虑这篇文章:How to Share Session State Between Classic ASP and ASP.NET

    您最好将 .asp 转换为 .NET .aspx。考虑解决方案的可维护性。

    【讨论】:

    • 不不实际上我不想再使用 asp 我只想要 asp.net 中的所有内容
    • @user:您需要认真编辑问题以实际包含您想要的内容,并删除不相关的无关代码。以目前的形式,包括误导性的标签和标题,读者无法立即说出问题所在。这与 mozilla 或其扩展无关,而是从 Classic ASP 迁移到 .NET。
    • 我只是提供一个简单的想法!!我创建了一个按钮扩展,单击该扩展后会将网页从梵文音译为古吉拉特语。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多