javascript - فايرفوكس - تحميل جافا قوقل كروم



كيفية تحديد إطار جافاسكريبت.إيجاد ملف ديف معين؟ (4)

بمجرد البحث عن div الخاص بك (الذي قد تقوم به عن طريق document.getElementById أو أي من وظائف دوم الأخرى، المواصفات المختلفة هنا )، يمكنك استخدام إما textContent أو textContent للعثور على نص هذا div . ثم يمكنك استخدام indexOf للعثور على السلسلة في ذلك.

بدلا من ذلك، على مستوى أقل، يمكنك استخدام وظيفة عودية للبحث من خلال جميع العقد النصية في النافذة، الأمر الذي يبدو أكثر تعقيدا بكثير مما هو عليه. في الأساس، بدءا من div الهدف الخاص بك (وهو Element )، يمكنك حلقة من خلال nodeValue سلسلة nodeValue (إذا كانوا Text s) أو تعيد إلى لهم (إذا كانوا Element s).

الخدعة هي أن نسخة ساذجة قد تفشل في العثور على "foo" في هذا الترميز:

<p><span>fo</span>o</p>

... لأن أيا من العقد Text اثنين هناك nodeValue مع "foo" في ذلك (واحد منهم لديه "fo" ، والآخر "o" ).

هل يمكن استخدام جافا سكريبت في سفاري / فيريفوكس / كروم للبحث في حاوية ديف معينة لسلسلة نصية معينة. وأنا أعلم أنك يمكن استخدام window.find(str) للبحث في الصفحة بأكملها ولكن هل من الممكن للحد من منطقة البحث إلى ديف فقط؟

شكر!


Answer #1

ربما كنت تحاول عدم استخدام مسج ... ولكن إذا لم يكن كذلك، يمكنك استخدام هذا $('div:contains(whatyouarelookingfor)') هو فقط أنه يمكن أن يعود العناصر الأصل التي تحتوي أيضا على ديف الطفل يطابق.


Answer #2
var elements = [];
$(document).find("*").filter(function () {
  if($(this).text().contains(yourText))
    elements.push($(this));
});
console.log(elements);

لم أحاول ذلك، ولكن وفقا وثائق مسج يجب أن تعمل.


Answer #3

اعتمادا على ما تحاول القيام به، وهناك طريقة مثيرة للاهتمام للقيام بذلك أن تفعل العمل (لا تتطلب بعض العمل).

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

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

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

بعض شفرات الأمثلة لمساعدتك في البدء. أنا أيضا يمكن أن تحاول وضع جسفيدل إذا كان هناك ما يكفي من الاهتمام.

بناء الجملة:

window.find(aStringToFind, bCaseSensitive, bBackwards, bWrapAround, bWholeWord, bSearchInFrames, bShowDialog);

على سبيل المثال، لبدء البحث داخل ميديف، حاول

document.getElementById("myDiv").click(); //Place cursor at the beginning
window.find("t", 0, 0, 0, 0, 0, 0); //Go to the next location, no wrap around

هل يمكن تعيين طمس (فقدان التركيز) معالج الحدث لتمكنك من معرفة عند مغادرة ديف حتى تتمكن من وقف البحث.

لحفظ موضع التمرير الحالي، استخدم document.body.scrollTop. يمكنك بعد ذلك تعيين مرة أخرى إذا كان يحاول القفز خارج ديف.

أتمنى أن يساعدك هذا! ~ techdude





safari