Альтернатива для метода .click () в Firefox - PullRequest
3 голосов
/ 15 июня 2010

У меня есть href, из которого я выдаю всплывающее окно, и я хочу активировать его в onload моего тела. Я использую document.getElementbyId("myelement").click(), который отлично работает в IE, но Firefox не поддерживает его. Я знаю, что .click() не будет поддерживаться Firefox, но у меня нет другого способа сделать это.

Не могли бы вы предложить обходной путь, который работает как в IE, так и в FF?
Заранее спасибо.

Ответы [ 3 ]

6 голосов
/ 15 июня 2010

Вы можете сделать так, как предлагает Alsciende, или, если вам нужен объект события, вы можете использовать dispatchEvent для запуска обработчика события:

document.body.onload = function () {
    var element = document.getElementById("element");

    if ("click" in element)
        element.click();
    else if ("dispatchEvent" in element) {
        var evt = document.createEvent("MouseEvents");
        evt.initMouseEvent("click", true, true, window,
            0, 0, 0, 0, 0, false, false, false, false, 0, null);
        element.dispatchEvent(evt);
    }
}

Иногда полезно использовать среду, такую ​​как jQuery , для обработки таких браузерных несоответствий. Более или менее, тот же код в jQuery будет:

$('#element').click();
2 голосов
/ 15 июня 2010

Создайте функцию, которая открывает всплывающее окно, и используйте эту функцию в обработчике загрузки тела, а также в обработчике ссылки ссылки.

function openPopup() {
  window.open("...");
  return false;
}

<body onload="openPopup()">
 ...
 <a id="myelement" href="#" onclick="openPopup()">...</a>
 ...
</body>
0 голосов
/ 30 декабря 2016

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

'leftclick .divname':' _functionname ',

Не уверен.но это может быть то, что подчеркивает js.Я использую это в магистральном приложении, которое поддерживает JS.

...