سؤال

عدد المستخدمين لدينا ترقية فقط من IE6 إلى IE7.على upgreaded المستخدمين الإبلاغ عن مشكلة مع الروابط التي زارها العودة إلى لم تسبق زيارتها اللون بعد تحديث الصفحة.يحدث هذا فقط على الروابط التي تستخدم جافا سكريبت بدلا من الثابت ترميز URL:

<script lang="JavaScript">
<!--
 function LoadGoogle()
 {
  var LoadGoogle = window.open('http://www.google.com');
 }
-->
</script>

<a href="javascript:LoadGoogle()">Google using javascript</a>
<a href="#" OnClick="javascript:LoadGoogle()">Google using javascript OnClick</a>

الروابط أعلاه سوف تعود مرة أخرى إلى لم تسبق زيارتها اللون كلما يتم تحديث الصفحة.لا يهم إذا كان يتم تحديث الصفحة بعد الظهر يدويا ضرب refresh أو f5 زر ، أو من التحديث التلقائي وظيفة.يرجى ملاحظة أن رمز أعلاه على تبسيط ما يحدث في الواقع, ولكن أعتقد أنه يوضح المسألة جيدا بما فيه الكفاية.

هذا يسبب مشكلة بالنسبة للمستخدمين لدينا لأننا توفير قائمة من البنود التي هي كلها إلى فتح نوافذ جديدة عن طريق جافا سكريبت عندما يتم النقر;وتحديث الصفحة الأم عند الانتهاء من المستخدمين معهم.في كل مرة الصفحة الرئيسية يتم تحديث كل هذه الروابط تعود إلى لم تسبق زيارتها اللون ، حتى المستخدمين لدينا هي أن تفقد المسار من العناصر التي عملوا.

لقد تم حفر حولها و يبدو أن هذا هو المقصود من السلوك.IE7 لا تسجيل هذه الروابط مع المتصفحات التاريخ.لا أحد يعرف عمل من شأنها أن تسمح لنا للحفاظ على هذه جافا سكريبت الروابط في زيارة دولة دون الحاجة إلى القيام إصلاح كبيرة من التطبيقات البرمجية ؟

شكرا لك.

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

المحلول

حقا لا يمكنك أن تتوقع javascript: URL للحفاظ على زيارة/لم تسبق زيارتها الدولة.أنها ليست حقيقية مواقع, أنهم أوامر المتصفح إلى تنفيذ في الوثيقة الحالية.

javascript: عناوين ينبغي أيضا ألا تستخدم أبدا.

<a href="javascript:LoadGoogle()">Google using javascript</a>

هذا هو كارثة تامة وسهولة الاستخدام.و عادة لأسباب SEO أيضا ، على الرغم من داخلي التطبيق هذا لا يهم (وربما جوجل بخير مع كبار المسئولين الاقتصاديين من دون مساعدتكم.;-))

<a href="#" OnClick="javascript:LoadGoogle()">Google using javascript OnClick</a>

هذا لا يزال سيئا لنفس الأسباب, بالإضافة إلى أنك قد نسيت return false في انقر فوق معالج ، وبالتالي فإن تمرير الصفحة إلى الأعلى ، javascript: في بداية معالج الحدث لا معنى له لأنه ليس URL.(في هذا السياق ، javascript: هي خط التسمية ، وهو تقريبا-تماما-لا طائل اللغة ميزة أن لا أحد من أي وقت مضى يستخدم حقا.)

هذا هو نوع من العلامات كنت تريد:

<a href="http://www.google.com/" onclick="window.open(this); return false;">Google proper link</a>

(في الواقع ربما كنت مزعجة-السيناريو الذي بدلا من أن تشمل onclick السمة.)

هذا من شأنه أن يعمل على جميع الأجهزة, جافا سكريبت متوفرة أو لا, متصفح البصرية أو لا تظهر المناسبة الرابط في شريط الحالة ، سوف تسمح للمستخدم استخدام جميع أدوات المتصفح العادي مثل وسط-فوق-for-new-tab أو انقر بزر الماوس الأيمن فوق-المرجعية-link على رابط دون الحصول على نفس الصفحة, صفحة فارغة أو خطأ بدلا من ذلك.

بطبيعة الحال ، فإنه سيتم أيضا بشكل صحيح تعكس زار/لم تسبق زيارتها الدولة المستهدفة الصفحة نفسها ، والتي هي أكثر بكثير من المرجح أن تكون دقيقة من المزور javascript: الزائفة URL.مشيرا href تنسب إلى موقع الفعلي الذي كان زار هي الطريقة الوحيدة التي يعول عليها للحصول على :visited التقديم.

نصائح أخرى

من المثير للاهتمام ، لم أواجه هذه المشكلة من قبل ولكن هذا منطقي.

الحلول المحتملة (لا يمكنني اختبارها الآن ، لذلك يتعين علي رميها هنا لتجربة إذا كنت تريد ذلك):

  • استخدام تجزئة فريدة: <a href="#JavaScriptLoadGoogle" onClick="...

    ربما يكون هذا كافياً لإجراء "زيارة" هذا الرابط بشكل دائم: إنه موقع صالح. (لا يجب أن يكون هناك مرساة فعلي لهذا الاسم في الصفحة.)

  • إذا كان هذا تطبيقًا يستوجب JS ، يمكنك فقط وضع ذلك سيتم زيارته في href ينسب:

    <a href='http://www.google.com' 
       onclick='LoadGoogle(); return false;'>  
    <!-- You don't need the Javascript: prefix here -->
    

    لست متأكدًا مما إذا كانت هذه الطريقة ستسجل عنوان URL كما تمت زيارته ، لأننا نعود false في حدث النقر.

ربما واحدة من هذه إصلاحات.

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