سؤال

هذا السؤال هو لخبراء JS هناك.

يمكنني استخدام هذا الجزء التالي من التعليمات البرمجية للحصول على جميع أسماء وظائف JavaScript الموجودة تحت جذر DOM.

  for(var x in window){ 
        val = ""+window[x];

       if(startsWith(val,"function")){  //only functions 
          alert(val)
       }
   } 

على الرغم من أن هذا الرمز يعمل بشكل مثالي على Firefox و Chrome ، إلا أنه لا يبدو أنه يعمل على IE8. يبدو كما لو أن الوظائف غير موجودة تحت عنصر النافذة في IE.

هل لديك أي فكرة كيف سأعمل على العمل على أي؟ شكرًا لك!

لا يوجد حل صحيح

نصائح أخرى

لا يمكن العثور على أي مكافئ IE8 لهذا ، ولكن يمكنك استخدام هذا الرمز لقراءة محتويات JS RAW في الصفحة وتحليلها للعثور على أي وظائف هناك:

var arrScripts = document.getElementsByTagName("script");
for (var i = 0; i < arrScripts.length; i++)
    alert(arrScripts[i].innerHTML);

ليست أنيقة مثل ما يقدمه Chrome أو FF ولكنه سيظل يعمل .. آمل أن يأتي شخص ما بطريقة أفضل. قون

يمكنك استخدام typeof() لمعرفة ما إذا كانت وظيفة مباشرة ، بدلاً من الاضطرار إلى تحويلها إلى سلسلة:

for(var x in window){ 
      val = window[x];
     if(typeof(val)=="function"){  //only functions 
        alert(""+val);
     }
 } 

(ملاحظة ، لقد قمت بتحويلها إلى سلسلة لـ alert() لذلك يمكنك أن ترى أنها لا تزال تفعل الشيء نفسه ؛ اعتمادًا على ما تهدف إلى القيام به ، قد لا تحتاج حتى إلى القيام بذلك)

فيما يتعلق بالطرق الأصلية: في IE8 يمكنك الوصول Window.prototype كى تحصل عليهم:

<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=100" >
<title>Test</title>
</head>
<body>
<ul style="font:normal 12px monospace;">
<script type="text/jscript">
<!--
try{
var win=Window.prototype;
for(var k in win)document.write('<li><strong style="color:blue">'+k+':</strong>'+win[k]+'</li>');
}catch(e){alert('[Window.prototype] not supported');}
//-->
</script>
</ul>
</body>
</html>

لاحظ أن IE8 يجب أن يعمل في وضع IE8 ، وإلا نافذة او شباك (مع أقصى ث) سيكون غير معروف.

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

a=function(){}//will not work
function b(){}//will not work
window.c=function(){}//this will work
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top