JavaScript: le remplacement des alert()
Quelqu'un a eu une expérience avec substitution de la alert()
fonction en JavaScript?
- Qui les navigateurs prennent en charge cette?
- Navigateur-prise en charge des versions de cette?
- Quels sont les dangers de substitution de la fonction?
- Si vous en bas de vote, expliquer pourquoi. C'est peut-être juste que j'ai parfaitement raison valable pour le faire.
- Je ne comprends pas le vote ici.
- N'est-ce pas une boucle infinie?
- non, il n'est pas. Le "normal" de la fenêtre.la fonction d'alerte sera attribué à la fenêtre._alert. >Après le< que la fenêtre.fonction d'alerte est redéfini.
- Votre code a été sémantiquement et syntaxiquement correct, bien que tiré par les cheveux, comme @paper1337 souligné...aucune chance de récursivité là lol...en essence, vous juste échangé corps de fonction avec
_alert
comme une sorte de expando temp en première instance. - Aye. J'ai fait un roll-back-tu, pour ne pas occulter la question 🙂
Vous devez vous connecter pour publier un commentaire.
C'est vraiment "pris en charge". Il est de votre page web, vous faites ce que vous voulez avec elle.
Je l'ai déjà fait cela pour le suivi analytique des événements sans modifier une bibliothèque, mais par se faufiler dans les événements.
Utiliser le modèle de proxy:
Vous pouvez également ignorer l'appel à la fonction d'origine si vous voulez (proxy)
Plus d'infos ici: JQuery Types #Modèle De Proxy
apply()
n'est pas disponible surwindow.alert
dans Internet Explorer 8.apply
est une méthode de laFunction
objet. Ils doivent donc explicitement restreint pouralert
?!Bien que la plupart des navigateurs prennent en charge la remplaçant, être prudent avec ce que vous faites avec elle.
Depuis l'alerte par défaut de la boîte de bloque le thread d'exécution, certaines bibliothèques qui dépendent de ce comportement ne fonctionneront plus (au mieux).
Vous devriez être un bon citoyen et d'éviter de toucher l'API native. Si vous le faites, vous pourriez casser des choses en place, lors de l'utilisation de la 3e partie du code.
Encore, si vous voulez redéfinir l'alerte de comportement dans un contexte spécifique, vous pouvez le joindre avec une fonction anonyme, comme ceci:
Il n'y a pas de dangers dans Overring fonction d'alerte. Chaque navigateur supprts il.
par exemple:
alert("Reloading")
et puis recharge la page web. Le texte de l'alerte peut jamais être vu par l'utilisateur.Je pense que chaque Javascript mise en œuvre soutiennent, et il n'y a pas de danger impliqué avec elle. Il est généralement fait pour remplacer la plaine OS style des boîtes d'alerte à quelque chose de plus élégant avec le HTML/CSS. Le faire de cette façon, vous n'avez pas à modifier du code existant! Le fait qu'il est possible rend Javascript génial.
Comme dit dans beaucoup d'autres réponses, vous pouvez simplement remplacer la fonction avec
ou
toutefois, cela ne signifie pas nécessairement remplacer la fonction sur le prototype de la
Window
constructeur (notez la majusculeW
), de sorte que le pirate peut toujours taper:par conséquent, vous devez également désactiver cette fonction avec:
ou
Ladislav.
Pour IE8 vous pouvez redéfinir alert() à l'instar de cette façon
et de l'appeler comme
Mon expérience avec le substituant la fonction alert() est que nous avons utilisé pour "hack" de l'essai de la version de bibliothèque JavaScript qui affiche "Veuillez vous inscrire!!!" écran de rappel par le biais d'alerte de temps à autre.
Nous venons de définir notre propre fonction alert() et le tour est joué.
C'était pour des fins de test uniquement, nous avons acheté la version complète pour plus tard, donc rien d'immoral qui se passe ici 😉
Toutes les implémentations de JavaScript dans les navigateurs modernes soutien primordial.
Les dangers sont tout simplement, que vous seriez en voiture les autres membres de l'équipe de la folie en substituant communément appelé fonctions telles que alert().
Donc, sauf si vous êtes fonctions de remplacement comme un outil pour peut-être debug ou hack code existant, d'une certaine façon, je ne vois pas de raison de le faire. Il suffit de créer une nouvelle fonction.
C'est sûr qu'il fonctionne dans firefox et ie8. Je ne peux pas voir qu'il y avait n'importe quel navigateur, il ne serait pas travailler. C'est à peu près fondamentaux de fonctionnement de javascript, même si l'on ne voyons pas souvent il est utilisé avec les fonctions natives comme ça =)
Un rapide hack que je fais pour le trouver où les alertes sont venant de, est d'aller à la console, puis entrez cette
Quand il s'agit de js les fonctions de votre navigateur
window.alert
est éminent et le plus connu, les gens qui ne savent pas de js savoiralert()
-- rassurez-vous, il est pris en charge dans tous les navigateurs en usage aujourd'hui et votre extrait de code est ainsi. Cependant, je ne voudrais pas surcharger (eh bien, ce est plus comme le remaniement plutôt que de les remplacer dans le sens de la programmation orientée objet)alert()
pour un cas d'utilisation particulier comme le vôtre, car lorsque vous avez réellement besoin d'alert()
avec pas de modèle, et vous n'aurez probablement, alors vous aurez besoin d'un autre non-fonction d'alerte de le faire.