0

以下にリストされているのは私のjavascript関数です。この関数はIEでは正常に機能しますが、window.event部分が含まれているため、Firefoxでは実行されません。IE以外の他のブラウザーで機能するようにこれを行う方法は、関数ヘッダーのパラメーターリストでパラメーターe(またはその他の未定義のもの)を使用することです。すでに別のパラメーターがある場合、パラメーターにイベントを追加するにはどうすればよいですか?以下にリストされているのは、アプリケーションから関数への呼び出しの例です。再度、感謝します。

function entityclick(where) {
    try {
        var tempstring = new String(window.event.srcElement.id)
    }
    catch (oExp) {
        var tempstring = new String("noclickyclicky")
    }
    tempstring = tempstring.substr(0, 3)
    if (tempstring != "img") {
        if (selectedentity != "") {
            try {
                document.getElementById('tbl' + selectedentity).style.backgroundColor = ""
            }
            catch (oExc) {
            }
        }
        selectedentity = where.EntityID + where.EntityCat;
        var EntityID = where.EntityID
        var EntityCat = where.EntityCat
        var ParentEntityID = where.ParentEntityID
        var ParentEntityCat = where.ParentEntityCat
        var projtype = 0
        document.getElementById('tbl' + selectedentity).style.backgroundColor = "lightsteelblue"
        //document.all('tbl'+selectedentity).className = "HighlightMe"
        ifram = document.getElementById('detailframe')
        if (0 == 0) {
            if (EntityCat == 35)
                ifram.src = "../teams/Viewteam.aspx?taskgrpid=" + EntityID + "&taskgrpcategory=" + EntityCat + "&ptaskgrpid=" + ParentEntityID + "&ptaskgrpcategory=" + ParentEntityCat + "&taskgrptype=" + GLOBALTASKGRPTYPE;
            else if (EntityCat == 26)
                ifram.src = "../teams/Viewteam.aspx?taskgrpid=" + EntityID + "&taskgrpcategory=" + EntityCat + "&ptaskgrpid=" + ParentEntityID + "&ptaskgrpcategory=" + ParentEntityCat + "&taskgrptype=" + GLOBALTASKGRPTYPE;
            else if (EntityCat == 34)
                ifram.src = "../teams/Viewteam.aspx?taskgrpid=" + EntityID + "&taskgrpcategory=" + EntityCat + "&ptaskgrpid=" + ParentEntityID + "&ptaskgrpcategory=" + ParentEntityCat + "&taskgrptype=" + GLOBALTASKGRPTYPE;
            else if (EntityCat == 10)
                ifram.src = "../solutions/ViewSolution.aspx?taskgrpid=" + EntityID + "&taskgrpcategory=" + EntityCat + "&ptaskgrpid=" + ParentEntityID + "&ptaskgrpcategory=" + ParentEntityCat + "&taskgrptype=" + GLOBALTASKGRPTYPE;
            else if (EntityCat == 11)
                ifram.src = "../observations/ViewObservation.aspx?taskgrpid=" + EntityID + "&taskgrpcategory=" + EntityCat + "&ptaskgrpid=" + ParentEntityID + "&ptaskgrpcategory=" + ParentEntityCat;
            else if (EntityCat == 12)
                ifram.src = "../actions/ViewAction.aspx?taskgrpid=" + EntityID + "&taskgrpcategory=" + EntityCat + "&ptaskgrpid=" + ParentEntityID + "&ptaskgrpcategory=" + ParentEntityCat;
            else if (EntityCat == 13)
                ifram.src = "../tasks/ViewTask.aspx?taskgrpid=" + EntityID + "&taskgrpcategory=" + EntityCat + "&ptaskgrpid=" + ParentEntityID + "&ptaskgrpcategory=" + ParentEntityCat;
            ifram.style.left = '27%'
            ifram.style.display = 'block'
            //detail.style.display = 'none'
            ifram.style.zIndex = 5
        }
    }
}

そして、これが関数の呼び出しです

entityclick(document.getElementById('tbl' + glbRefreshID + glbRefreshCAT))

編集:entityclickは、特定の場所で他の方法でも呼び出されます。

entityclick(this)

また

entityclick(document.getElementById('tbl' + GlobalExplodeID + GlobalExplodeCat))
4

2 に答える 2

0

イベント ハンドラとして追加の関数を使用します。例えば

function handler(e) {
    if (!e)
        e = window.event;
    entityclick(e.target, e); // have more than one parameter in your fn
}
var elem = document.getElementById("xyz");
if (elem.addEventHandler)
    elem.addEventHanlder("click", handler, false);
else
    elem.attachEvent("onclick", handler);

function entityclick(elem, e) {
/* get: a DOM node with special properties[, an Event object] */
     if (e)
          // we handle something
     else
          // we have to use defaults
}
于 2012-05-01T15:53:33.300 に答える
0

この投稿のヒントを使用して解決できました

http://www.sitepoint.com/forums/showthread.php?330837-window-event-is-not-working-in-Firefox

イベントとこれを同じ関数に渡すことができるため、必要なすべてのアイテムを引き続き取得できます。見てくれた/手伝ってくれたみんなありがとう。

于 2012-05-02T14:44:37.967 に答える