الحصول على النص المحدد في المتصفح، عبر الأنظمة الأساسية

StackOverflow https://stackoverflow.com/questions/10478

  •  08-06-2019
  •  | 
  •  

سؤال

أحد الأشياء التي أود القيام بها في تطبيقي المستند إلى المتصفح هو السماح للمستخدم بتحديد بعض النص (ليس في <textarea>، فقط نص عادي!) ثم يمكنه التفاعل مع التالي (في حالتي، أضف التعليقات التوضيحية).

لقد وجدت الكثير من الأشياء على Google والتي يبدو أنها تركز على كتابة محررات WYSIWYG، ولكن هذا ليس ما أريد, ، وكان معظمها يعمل في IE ولكن ليس في FF2 أو 3.من الناحية المثالية، أريد بعض الوظائف التي يمكنها إرجاع النص المحدد حاليًا في نافذة المتصفح التي تعمل فيها IE7 (و6 إن أمكن)، وFireFox 2 و3، وSafari 2.إذا كان يعمل في Opera، فسيكون ذلك بمثابة مكافأة، لكنه ليس شرطًا.

هل لدى أي شخص وظيفة تفعل هذا؟أو فكرة من أين تبدأ؟

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

المحلول

القي نظرة على مسج و ال البرنامج المساعد التفاف الاختيار.قد يكون ما تبحث عنه.

نصائح أخرى

يعد هذا المكون الإضافي jQuery رائعًا ولكنه ينجز مهمة محددة جدًا:قم بلف النص الذي تحدده بعلامة.قد يكون هذا ما تريده فقط.ولكن إذا كنت لا تريد (أو كنت في موقف لا يمكنك فيه) إضافة أي علامات غريبة إلى صفحتك، فيمكنك تجربة الحل التالي بدلاً من ذلك:

function getSelectedText() {
  var txt = '';

  if (window.getSelection) {
    txt = window.getSelection();
  }
  else if (document.getSelection) {
    txt = document.getSelection();
  }
  else if (document.selection) {
    txt = document.selection.createRange().text;
  }
  else return; 

  return txt;
}

تقوم هذه الوظيفة بإرجاع كائن يمثل تحديد النص.إنه يعمل عبر المتصفحات (على الرغم من أنني أظن أن الكائنات التي تُرجعها ستكون مختلفة قليلاً اعتمادًا على المتصفح ويمكن الاعتماد عليها فقط للنص الفعلي للنتيجة بدلاً من أي من الخصائص الإضافية).

ملحوظة:لقد اكتشفت في الأصل جزء التعليمات البرمجية هنا: http://www.codetoad.com/javascript_get_selected_text.asp

مقدمة إلى النطاق يحتوي على بعض التفاصيل حول كيفية قيام المتصفحات المختلفة بمنحك حق الوصول إلى تحديد النص.

تجربتي هي أن العمل مع واجهات برمجة التطبيقات المختلفة هذه بشكل مباشر أمر أخرق تمامًا، لذا إذا التفاف الاختيار يناسبك سأذهب مع ذلك.

هذه الأيام هذه الطريقة يبنغي أن يكون كافيا:

function getSelectedText() {
    return window.getSelection ? window.getSelection().toString() : '';
}

سوف يعود '' في حالات نادرة للمتصفحات القديمة جدًا وقد يكون ذلك في حالة Opera Mini (على الرغم من أنه قد يكون قديمًا للاختبار) + راجع الملاحظة الخاصة بمتصفح UC لنظام Android.

سلوك المتصفحات الفردية فيما يتعلق بالاختيار هو المبينة هنا.

يعمل هذا الرمز في Safari وIE وFirefox - آمل أن يكون مفيدًا بعض الشيء

var str = (window.getSelection) ? window.getSelection() : document.selection.createRange();
str = str.text || str;
str = str + ''; // the best way to make object a string...
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top