سؤال

<noscript><div id="example">I want to get this innerHTML</div></noscript>

<script type="text/javascript"> alert($('example').innerHTML);</script>

هذا مقتطف جافا سكريبت فقط بإرجاع سلسلة فارغة.هل هناك طريقة للحصول على محتويات noscript العقدة?

p.s.أنا باستخدام النموذج على هذا المشروع بالذات.

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

المحلول

إذا تم تمكين البرمجة النصية، يتم تعريف العنصر علامة منع النص البرمجي كما تحتوي على نص فقط - على الرغم من أنه يجب أن يكون <م> قابلة للتحليل النص، مع بعض القيود على المحتوى. مع أخذ ذلك في الاعتبار، يجب أن تكون قادرا على استخراج النص، تحليل ذلك، ومن ثم العثور على العنصر المطلوب. وهناك مثال بدائية من هذا الآتي:

var nos = document.getElementsByTagName("noscript")[0]; 
// in some browsers, contents of noscript hang around in one form or another
var nosHtml = nos.textContent||nos.innerHTML; 

if ( nosHtml )
{
  var temp = document.createElement("div");
  temp.innerHTML = nosHtml;

  // lazy man's query library: add it, find it, remove it
  document.body.appendChild(temp);
  var ex = document.getElementById("example");
  document.body.removeChild(temp);

  alert(ex.innerHTML);
}

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

نصائح أخرى

وأنا لست متأكدا من النموذج، ولكن هذا يعمل في كروم مع مسج:

$('noscript').before($('noscript').text());

من HTML 4.0 المواصفات:

على NOSCRIPT عنصر يسمح المؤلفين لتقديم محتوى بديل عندما النصي يتم تنفيذ ذلك.محتوى NOSCRIPT عنصر يجب أن يكون فقط المقدمة من قبل البرنامج النصي-علم وكيل المستخدم في الحالات التالية:

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

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

واختبار مع فايرفوكس 3.0.7، 3.2.2 سفاري، وMSIE 7.0.5730.13 (كل شيء على ويندوز إكس بي SP3) يبدو أن كل شيء داخل العلامات <noscript> تم حذف تماما من شجرة DOM.

قد يكون من الممكن للوصول إلى العنصر <noscript> نفسها، ومع ذلك، وبعد ذلك استخدام أساليب DOM لتغيير العناصر التابعة لها.

وحاول $ ($ ( "نوسكريبت"). نص ()) مع مسج.

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