在IE中调度自定义事件并在其他地方(Bubbling)监听它

时间:2013-05-01 23:43:06

标签: javascript events event-bubbling

我似乎无法在JavaScript中使用它。我尝试过使用普通的JavaScript和JQuery,但似乎没有任何效果。

这是我的情况: 我有这个PopUp" Panel"在其中我有一个按钮。该按钮具有一个用于单击的事件侦听器,我希望该处理程序触发Panel将侦听的自定义事件。这是因为我需要处理Panel中按钮单击的所有逻辑。

这是我正在做的事情: 在我启动Panel之前,我为我的" Class":

调用了一个构造函数
function PopUpStageAsssignmentTaker(content) {
            PopUpStage.call(this);
            this.allPagesAdded = false;
            this.questionsCreated = [];// will be an array of pages that will be submitted
            this.listLabel = null;
            addAssignmentTakerParts.call(this);
            this.popUpDiv.addEventListener("assignmentTakingSubmitEvent", handleAssignmentSubmit, true);

            function handleAssignmentSubmit(event) {
                alert("YESSS!");
            }
        }

这确实有点但只知道在调用PopUpStage时它会创建代表Panel的div并将其保存在this.popUpDiv中。所以我为this.popUpDiv添加了一个事件监听器,用于监听我正在编写的一些自定义事件。

后来我有代码在Panel中创建内容,我们有类似的东西:

SubmitQuestionTakingPage.prototype.makeContent = function(question) {
                var questionWrapper = getQuestionWrapper();

                var submitDiv = document.createElement("section");
                submitDiv.innerHTML = "Pressing Submit will cause this Assignment to be submitted and you will be unable to make any changes after that. If this " +
                        "Assignment is automatically graded you will receive a Grade upon clicking submit. If this Assignment is not automatically submitted you must wait" +
                        " for the creator of this Assignment to assign you a Grade. To continue, please press Submit.";
                submitDiv.setAttribute("class", "separatedSmaller");
                questionWrapper.appendChild(submitDiv);

                var submitButton = document.createElement("input");
                submitButton.setAttribute("type", "submit");
                submitButton.setAttribute("class", "fancyButton");
                submitButton.addEventListener("click", handleSubmitButtonClick);
                questionWrapper.appendChild(submitButton);


                return questionWrapper;
            };

            function handleSubmitButtonClick(event) {
                 var event = document.createEvent("Event");
                  event.initEvent("assignmentTakingSubmitEvent", true, true);
                  window.dispatchEvent(event);

// $(this).trigger(" assignmentTakingSubmitEvent");                 }

因此我们创建了一些内容,并在其中创建了一个具有点击监听器的按钮。在点击处理程序中,您可以看到我如何触发事件。

问题:我读到这在版本9+以下的IE中不起作用。我可以做些什么来使它在所有浏览器中都能运行?有办法吗?

0 个答案:

没有答案