سؤال

كيف يمكننا تغيير النص المعروض في شريط حالة المتصفح باستخدام JavaScript (أو jQuery)؟

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

المحلول

ومسج ليس من الضروري القيام بذلك:

<script>
function writetostatus(input){
    window.status=input
    return true
}
</script>

ولكن معظم المتصفحات الحديثة تمنعك من وضع النص في شريط الحالة من جافا سكريبت.

نصائح أخرى

يمكن القيام بذلك.يقوم بحث Google بذلك، وهو ما يمكن رؤيته عند المرور فوق رابط Google، ويعرض شريط الحالة الموقع الأساسي:

enter image description here

ومع ذلك، عندما تنقر عليه، فإنه ينقلك إلى الموقع وعنوان URL المعتمد على وكيل المستخدم الذي يبدو كذلك https://www.google.com.sg/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CC8QFjAAahUKEwi4lP-Z4_rIAhVLk5QKHXRLAe8&url=https%3A%2F%2Fwww.example.com%2F&usg=AFQjCNFEbIRqDC65KFpmuak0aXKmnzjKVQ&bvm=bv.106923889,d.dGo.يقوم عنوان url بتتبع Google وما إلى ذلك قبل إعادة توجيهك إليه https://www.example.com.يمكنك اختبار ذلك بسهولة باستخدام Network Inspector باستخدام "الحفاظ على السجل".

إنهم يستخدمون أ hacky لكنها تعمل عبر جميع المتصفحات.

الحيلة هي أن ندرك أنه يمكننا ضبط شريط الحالة على أي شيء تقريبًا باستخدام HTLM فقط a href (لا حاجة إلى CSS ولا JavaScript).كل ما نحتاجه هو خداع محلل المتصفح ليعتقد أن href القيمة هي عنوان URL صالح وستعرضه.

حاول تشغيل هذا المقتطف:

<a href="http://.# this is p͕͓͔͕͓͔͕͓͔͕͓͔͕͓͔͕͓͔͕͓͔͕͓͔͕͓͔͕͓͔͕͓͔̐̑̓̐̑̓̐̑̓̐̑̓̐̑̓̐̑̓̐̑̓̐̑̓̐̑̓̐̑̓̐̑̓̐͜͜͜͜͜͜͜͜͜͜͜͜‌​̴̵̶͕͓͔͕͓͔͕͓͔͕͓͔̖͕͓̖̱̲̳̖̖̖̖̖̖̖͕̑̓̐̑̓̐̑̓̐̑̓̑̒̓̔̐̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̒̓̔̐̕̚͜͜͜͜͜‌​͓͔̖͕͓͔̖͕͓͔̖͕͓͔̖͕͓͔̖͕͓͔̖̑̓̑̒̓̔̐̑̓̑̒̓̔̐̑̓̑̒̓̔̐̑̓̑̒̓̔̐̑̓̑̒̓̔̐̑̓̑̒̓̔̕̚̕̚̕̚̕̚̕̚̕̚͜͜͜͜͜‌​͕͓͔̖͕͓͔̖̐̑̓̑̒̓̔̐̑̓̓̓̓̓̓̓̑̒̓̔̕̚̕̚͜͜owerful because ━Σ(゚Д゚|||)━ symbols !@)(*#&$^%</even htlm> or lorem ipsum in all scripts Лорем ипсум Lorem存有 ငါ့ရဲ့ဇာတ်မြင့် घरՏուն Дома ലോറെൻ  ഇപ്സം درமுகப்புЛорем ипсумలోלורם איפסוםరెం ఇప్సమ్ მთავარი હોમ לורם איפסוםלורם איפסום Forsíða Loremのイプサム ಮುಖಪುಟ ទំព័រដើម 가 lorem ipsum의 ຫນ້າທໍາອິດ Տուն আর্কাইভ">Hover this link (do not click) and observe the browser's status bar.</a>

مخرجات Chrome (انقر فوق الصورة لتكبيرها):(الإصدار46.0.2490.80 م)

enter image description here

مخرجات فايرفوكس:(الإصدار 42.0)

enter image description here

إخراج آي إي:(الإصدار 11.0.9600.17905 تحديث الإصدارات 11.0.21 (KB3065822))

enter image description here

مخرجات الأوبرا:(الإصدار 33.0.1990.58 مستقر)

enter image description here

مخرجات Seamonkey:(الإصدار 2.38)

enter image description here

إخراج أفانت:(v Ultimate 2015 الإصدار 28)

  • محرك آي إي 11:

    enter image description here

  • محرك متوافق مع IE:

    enter image description here

  • محرك الكروم:

    enter image description here

  • محرك فايرفوكس:

    enter image description here

مخرجات الشعلة:(الإصدار 42.0.0.10546)

enter image description here

إخراج بايدو:(الإصدار 43.19.1000.119)

enter image description here

مخرجات ماكسثون:(الإصدار 4.4.8.1000)

enter image description here


كما أنه ليس من الضروري استخدامه # (ال معرف القطعة).سوف تنظر المتصفحات في نص مثل http://some.message.here./and_more_message_here كعنوان URL صالح أيضًا.قد تعتبر السلاسل الأغرب صالحة اعتمادًا على المتصفح:

  1. <a href="http://a.b.c.d/test_symbols_!#$%^&*()[]{};:'&quot;.><,//=+``~">

    (Chrome، FireFox، IE، SM، Torch، Baidu، Maxthon، Avant IE11، Avant IE Compat، Avant Chrome، Avant Firefox.)

    (يتم إدراج الأسماء للمتصفحات ذات المخرجات المتوقعة، ويتم شطب الأسماء ("مثال") للمتصفحات التي لا تحتوي على إخراج لشريط الحالة، ويتم وضع خط تحت الأسماء ("e̲x̲a̲m̲p̲l̲e̲") للمتصفحات ذات الإخراج/السلوك غير المتوقع.تم اختباره باستخدام إصدارات المتصفح نفسها كتلك المذكورة أعلاه.)

  2. <a href="http://a.b.c.d/test some spaces">

    (Chrome، FireFox، I̲E̲، SM، Torch، B̲a̲i̲d̲u̲، M̲a̲x̲t̲h̲o̲n̲، A̲v̲a̲n̲t̲ I̲E̲ ̲1̲1̲، A̲v̲a̲n̲t̲ I̲E̲ ̲C̲o̲m ̲p̲a̲t̲، Avant Chrome، Avant Firefox.)

  3. <a href="http://test some . spaces in domain part/a_b_c_d_e">

    (كروم، ثعلب النار, ، أي، سم, T̲o̲r̲c̲h̲, B̲a̲i̲d̲u̲, M̲a̲x̲t̲h̲o̲n̲, A̲v̲a̲n̲t̲ I̲E̲ ̲1̲1̲, A̲v̲a̲n̲t̲ I̲E̲ ̲C̲o̲m̲p ̲a̲t̲، A̲v̲a̲n̲t̲ C̲h̲r̲o̲m̲e̲، أفانت فايرفوكس)

  4. <a href="http://test some . spaces in domain part without slash">

    (كروم، ثعلب النار, ، أي، سم, T̲o̲r̲c̲h̲, B̲a̲i̲d̲u̲, M̲a̲x̲t̲h̲o̲n̲, A̲v̲a̲n̲t̲ I̲E̲ ̲1̲1̲, A̲v̲a̲n̲t̲ I̲E̲ ̲C̲o̲m̲p ̲a̲t̲، A̲v̲a̲n̲t̲ C̲h̲r̲o̲m̲e̲، أفانت فايرفوكس)

  5. <a href="http://test_without_slash_and_dots">

    (Chrome، FireFox، IE، SM، Torch، Baidu، Maxthon، Avant IE11، Avant IE Compat، Avant Chrome، Avant Firefox)

  6. <a href="http://a.b.c:port_with_letters_test">

    (كروم, ثعلب النار, أي, سم, شعلة, بايدو, ماكسثون, أفانت IE11, A̲v̲a̲n̲t̲ I̲E̲ ̲C̲o̲m̲p̲a̲t̲, أفانت كروم, أفانت فايرفوكس)

  7. <a href="http://http://double.http.test">

    (Chrome، FireFox، IE، SM، Torch، Baidu، Maxthon، Avant IE11، Avant IE Compat، Avant Chrome، Avant Firefox)

  8. <a href="http://test @ with spaces">

    (كروم، ثعلب النار, أي, سم, T̲o̲r̲c̲h̲, B̲a̲i̲d̲u̲, M̲a̲x̲t̲h̲o̲n̲, A̲v̲a̲n̲t̲ I̲E̲ ̲1̲1̲, A̲v̲a̲n̲t̲ I̲E̲ ̲C̲o̲m̲p ̲a̲t̲، A̲v̲a̲n̲t̲ C̲h̲r̲o̲m̲e̲، أفانت فايرفوكس)

  9. <a href="http://test:password@ with spaces/">

    (كروم، ثعلب النار, أي, سم, T̲o̲r̲c̲h̲, B̲a̲i̲d̲u̲, M̲a̲x̲t̲h̲o̲n̲, A̲v̲a̲n̲t̲ I̲E̲ ̲1̲1̲, A̲v̲a̲n̲t̲ I̲E̲ ̲C̲o̲m̲p ̲a̲t̲، A̲v̲a̲n̲t̲ C̲h̲r̲o̲m̲e̲، أفانت فايرفوكس)

  10. <a href="http:// test : password @with.spaces/">

    (C̲h̲r̲o̲m̲e̲، فايرفوكس، أي, SM, T̲o̲r̲c̲h̲, B̲a̲i̲d̲u̲, M̲a̲x̲t̲h̲o̲n̲, A̲v̲a̲n̲t̲ I̲E̲ ̲1̲1̲, A̲v̲a̲n̲t̲ I̲E̲ ̲C̲o̲m̲ p̲a̲t̲، A̲v̲a̲n̲t̲ C̲h̲r̲o̲m̲e̲، Avant Firefox)

  11. <a href="http://test@double@a.b.c.d">

    (C̲h̲r̲o̲m̲e̲، فايرفوكس، أي, SM, T̲o̲r̲c̲h̲, B̲a̲i̲d̲u̲, Maxthon, A̲v̲a̲n̲t̲ I̲E̲ ̲1̲1̲, A̲v̲a̲n̲t̲ I̲E̲ ̲C̲o̲m̲p̲a̲t̲, A̲v̲a ̲n̲t̲ C̲h̲r̲o̲m̲e̲، أفانت فايرفوكس)

  12. كرر جميع سلاسل الاختبار أعلاه، مع http:// وحل محله https://, ftp://, about://, chrome://, file://, foobar://, ، وإلخ.

يمكننا أن نرى أنه إذا كان المتصفح لا يعتبر السلسلة عنوان URL صالحًا، فسوف يفشل بأمان من خلال عدم عرض شريط الحالة، لذلك لا يحدث أي ضرر.(باستثناء أنه يبدو أن هناك بعض الأخطاء التي تحدث في Avant IE Compat مع سلسلة الاختبار "http://a.b.c:port_with_letters_test".)


إن الحصول على شريط حالة المتصفح لعرض السلسلة المطلوبة هو الخطوة الأولى فقط.الخطوة الثانية هي إيقاف المتصفح من تحميل الصفحة عندما ينقر المستخدم على الرابط.

يمكن القيام بذلك بسهولة باستخدام return false:

<a onclick="return false" href="http://some.message.here./and_more_message_here">this link will not load</a>

أو:

<a onclick="return f()" href="http://some.message.here./and_more_message_here">this link will not load</a>
<script>
  function f() {
    return false;
  }
</script>

تم اختبار المقتطفين أعلاه للعمل على Chrome وFireFox وIE وSM وTorch وBaidu وMaxthon وAvant IE11 وAvant IE Compat وAvant Chrome وAvant Firefox.


الخطوة الأخيرة هي الاستخدام window.location أو window.open لتقليد سلوك a href.يمكن أن يتم ذلك مضمنًا:(اختبار عبر الإنترنت)

<!doctype html>
<a onclick="location='http://example.org'; return false" href="https://some.message.here./and_more_message_here">same tab</a>
<br><a onclick="window.open('http://example.org'); return false" href="https://some.message.here./and_more_message_here">new tab</a>


أو باستخدام return func(): (اختبار عبر الإنترنت)

<!doctype html>
<a onclick="return f1()" href="http://some.message.here./and_more_message_here">same tab 2</a>
<br><a onclick="return f2()" href="http://some.message.here./and_more_message_here">new tab 2</a>
<script>
  function f1() {
    location = 'http://example.org';
    return false;
  }

  function f2() {
    open('http://example.org');
    return false;
  }
</script>

أو مضمنة مع setTimeout: (اختبار عبر الإنترنت)

<!doctype html>
<a onclick="setTimeout(function(){location='http://example.org';},1); return false" href="https://some.message.here./and_more_message_here">same tab 3</a>
<br><a onclick="setTimeout(function(){window.open('http://example.org');},1); return false" href="http://some.message.here./and_more_message_here">new tab 3 (doesn't work on Avant IE11 and Avant IE Compat if this link is HTTP; works if it is HTTPS or FTP)</a> 


أو باستخدام return func() مع setTimeout: (اختبار عبر الإنترنت)

<!doctype html>
<a onclick="return f1()" href="http://some.message.here./and_more_message_here">same tab 4</a>
<br><a onclick="return f2()" href="http://some.message.here./and_more_message_here">new tab 4 (doesn't work on Avant IE11 and Avant IE Compat if this link is HTTP; works if it is HTTPS or FTP)</a> <!-- hadn't tested this with sourcepage=HTTP. only tested with sourcepage=HTTPS and sourcepage=localwebpage -->
<script>
  function f1() {
    setTimeout(function() {
      location = 'http://example.org';
    }, 1);
    return false;
  }

  function f2() {
    setTimeout(function() {
      open('http://example.org');
    }, 1);
    return false;
  }
</script>

تم اختبار المقتطفين أعلاه أيضًا للعمل على Chrome، وFireFox، وIE، وSM، وTorch، وBaidu، وMaxthon، وAvant IE11 (مع التحذير المذكور في الكود)، وAvant IE Compat (مع التحذير المذكور في الكود)، وAvant Chrome، وAvant ثعلب النار.

لمن يهمه الأمر ملاحظة بسيطة محددة لشركة آي إي:

حتى IE6 وبما في ذلك يمكنك القيام بما يلي:

window.status = "Hello, I'm a custom status bar note.";

ولكن بعد IE6 (اختبار IE7/8) يمكنك أن تفعل ذلك بنفس الطريقة، ولكن تحتاج أيضًا إلى تكييف خيارات أمان المتصفح عن طريق تشغيل الميزة:الأدوات - خيارات الإنترنت - الأمان - المستوى المخصص:

alt text

وأولا وقبل كل شيء، مظهر لها ليست موحدة في جميع أنحاء المتصفحات، وثانيا، أن وظيفة <لأ href = "http://blog.taragana.com/index.php/archive/how-to-enable-windowstatus-in "لقد كان> المعوقين لفترة طويلة <لأ href =" -firefox / "يختلط =" نوفولو noreferrer http://lists.macosforge.org/pipermail/webkit-dev/2008-February/003353.html "يختلط =" نوفولو noreferrer "> افتراضيا على معظم المتصفحات لأسباب أمنية.

وعلى أي حال، وجافا سكريبت للقيام بذلك هو window.status = "my text" بسيطة

استخدم

وwindow.status = "whatever you want"

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