سؤال

كان لدي انطباع بأنني أحتاج فقط إلى تحديد "البروتوكول" عند استخدام JavaScript في سمات URL، كما هو الحال في hrefs.هل هذا هو السياق "المفيد" الوحيد لـ javascript:?

منطقي:

<a href="javascript:alert('Hello')">World!</a>

سخيف:

<form onsubmit="javascript:alert('oops!')">

هل هذا صحيح؟أم أن هناك بعض الأخطاء/حالات الاستخدام الغامضة التي يجب أن أكون على دراية بها؟

هل كانت مفيدة؟

المحلول

ال javascript: سيتم تجاهل Pseudo-Protocol على معالجات الأحداث فقط ، ولا تحتاج إليه ، وسيقوم محرك JavaScript بتفسير javascript: ك بيان التسمية.

توفر الملصق ببساطة معرفًا لبيان ، ويتيح لك الرجوع إليه في مكان آخر في البرنامج.

IMHO ، هذا pseudo-protocol مفيد فقط للمراقبة ...

المقالة الموصى بها:

نصائح أخرى

كما ذكرت الإجابات الأخرى، تجنب استخدام javascript: روابط href، وهي غير ضرورية على الإطلاق في سمات معالج الأحداث.لكن منذ A العلامات لا تزال في بعض الأحيان صحيحة من الناحية الدلالية، وسوف تحتاج إلى وضع شيء ما في href السمة إذا كنت تريد الخاص بك :link و :hover أنماط CSS التي سيتم تطبيقها على العنصر في Internet Explorer.في هذه الحالة استخدم:

<a href="#" onclick="doSomething(); return false;">Link</a>

أو

<a href="javascript://" onclick="doSomething();">Link</a>

يوجد خطأ واحد (غامض إلى حد ما) في جافا سكريبت البروتوكول - في Internet Explorer*، سيعتقد أنك تترك الصفحة عندما تنقر فوق الارتباط.إذا كنت تستخدم window.onbeforeunload, ، فستظهر رسالة التنقل بعيدًا في هذا الوقت.ولهذا السبب وحده، توقفنا عن استخدام جافا سكريبت البروتوكول بالكامل حتى لا يظهر هذا الخطأ لأننا نسينا التحقق منه عندما نضيف رسالة التنقل بعيدًا إلى بعض الصفحات.


* ربما كان ينبغي عليّ تحديد الإصدار عندما كتبت هذا لأول مرة.لا أتذكر ذلك على الإطلاق، ولكن في حالة وجود الخطأ فقط في متصفح معطل في الغالب مثل IE 6 أو 7، فمن الأفضل أن تختبره بنفسك.

لا تحدد ذلك على الإطلاق ، من أي وقت مضى. من الخطأ القيام بذلك في <a> العلامات ، والتي يجب ترميزها بدلاً من ذلك:

<a href='#' onclick='alert("Hello")'>World</a>

إنها بقايا من الأيام الماضية. المرة الوحيدة التي يمكنني التفكير فيها في المكان الذي يتم استخدامه في شريط عنوان المتصفح (وإشارات الإشارات المرجعية). ابقها خارج صفحاتك.

في الممارسة العملية ، أنت محق.

تحتاج إلى القيام بذلك في أي حالة من المتوقع أن يكون هناك شيء آخر غير البرنامج النصي. من الناحية النظرية ، يمكنك الالتصاق javascript:whatever في أي مكان يمكنك استخدام عنوان URL ، لكن هذا لم يتم دعمه مطلقًا ويوصى به رسميًا ضد الاستخدام.

لكن, ، لا ينبغي أن تستخدم حقًا javascript: على الاطلاق. للحصول على روابط ، يمكنك استخدام onclick ينسب. ما يحدث بالفعل في الوقت الحاضر هو محرك JavaScript الذي يحدده javascript: كتسمية ، وهذا هو السبب في تنفيذ الرمز.

يجب عليكم جميعا التحقق من ذلكhttp://bytes.com/topic/javascript/answers/504856-javascript-pseudo-protocol-event-handlersوخاصة المنشور الذي كتبه "Lasse Reichstein Nielsen"، لأن معظم الإجابات هنا غير صحيحة بطريقة ما.

تذكر أيضًا أن علامة الربط لا تتطلب href على الإطلاق!إنه<a>hi</a> صالح XHTML.المشكلة باستخدام href="#" هو أنه قد ينتقل إلى أعلى الصفحة..ببساطة ليست هناك حاجة إليها.وأخيرًا، إذا كنت لا تريد فعلًا سلوك علامة الارتساء، فيجب ألا تستخدمها.يمكنك محاكاة المرساة باستخدام CSS (cursor:pointer) وأحداث مثل mouseenter وmouseleave (وهو ما يتطلب المزيد من العمل، ولكنه لا "يكسر" السلوك المتوقع لعلامة الارتساء).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top