w witrynie mojej firmy znajduje się stwierdzenie if, które sprawia, że jedna strona internetowa jest niekompatybilna z programem Firefox
if(event.srcElement.getAttribute("onclick") == null){
...code..
document.mainForm.submit();
}
Skomentowałem warunki instrukcji if i teraz działa z forefoxem. Moje pytanie brzmi, co to jest event.srcElement.getAttribute ("onclick"), czy to ważne, czy spowodowałoby to problemy w przyszłości. czy jest coś podobnego, na które mogę zamienić stan, aby działał w przeglądarce Firefox?
Edytować:
function gotoRDManagerPT(PTId, bDDetailId) {
if(!proceed()) return false;
var target = event.target || event.srcElement;
if(event.target.getAttribute("onclick") == null) {
document.mainForm.displayRDManagerPT.value = "true";
document.mainForm.PTId.value = PTId;
document.mainForm.bDDetailId.value = bDDetailId;
document.mainForm.submit();
}
}
javascript
firefox
cross-browser
code511788465541441
źródło
źródło
Odpowiedzi:
srcElement
jest własnością zastrzeżoną pochodzącą z IE. Znormalizowana właściwość totarget
:var target = event.target || event.srcElement; if(target.onclick == null) { // shorter than getAttribute('onclick') //... document.mainForm.submit(); }
Zajrzyj również na quirksmode.org - Właściwości zdarzenia, aby uzyskać więcej informacji na temat różnych przeglądarek.
Jeśli chodzi o pytanie, co robi:
event.target
/event.srcElement
zawiera odniesienie do elementu, w którymevent
został wywołany.getAttribute('onclick') == null
sprawdza, czy moduł obsługi zdarzenia kliknięcia jest przypisany do elementu za pośrednictwem wbudowanej obsługi zdarzeń .Czy to ważne? Nie możemy powiedzieć, ponieważ nie wiemy, co
...code..
to robi.źródło
window
ale przekazywane jako pierwszy argument do programu obsługi zdarzeń. Więc potrzebujesz czegoś takiegofunction yourHandler(event) { event = event || window.event; var target = event.target || event.srcElement; ...}
. Lub opublikuj kod tam, gdzie jest on zawarty, jeśli potrzebujesz dodatkowej pomocy.W IE obiekt zdarzenia jest już dostępny w obiekcie okna; w przeglądarce Firefox jest przekazywana jako parametr w programie obsługi zdarzeń.
Przykład
JavaScript:
function toDoOnKeyDown(evt) { //if window.event is equivalent as if thie browser is IE then the event object is in window //object and if the browser is FireFox then use the Argument evt var myEvent = ((window.event)?(event):(evt)); //get the Element which this event is all about var Element = ((window.event)?(event.srcElement):(evt.currentTarget)); //To Do --> }
HTML:
<input type="text" id="txt_Name" onkeydown="toDoOnKeyDown(event);"/>
Jak zauważyłeś, wywołując funkcję w kodzie HTML, dodaliśmy parametr
event
na wypadek, gdyby przeglądarką była Firefox.Przeczytałem w artykule, że obiekt zdarzenia w IE jest wywoływany,
window.event
aw Firefoksie musimy umieścić go jako parametr.W przypadku potrzeby dołączenia go w kodzie:
document.getElementById('txt_Name').onkeydown = function(evt) { var myEvent = ((window.event)?(window.event):(evt)); // get the Element which this event is all about var Element = ((window.event)?(event.srcElement):(evt.currentTarget)); // To Do --> };
źródło
Spróbuj szybko naprawić w następujący sposób:
Uwzględnij w kodzie:
let target = event.target || event.srcElement;
i zmienić
rozwiązuje to problem z przeglądarką Firefox.
źródło