1.التضمين غير قانوني
العلامة <embed> هي علامة خاصة لـ Netscape على الرغم من استخدام العلامة <embed> على نطاق واسع، من HTML3.2 وHTML4.0 إلى XHTML1.0، إلا أن W3C لم تقم بتضمين هذه العلامة. الصفحات التي تستخدم العلامة <embed> لن تجتاز التحقق من صحة W3C.
2. يجب عليك استخدام الكائن
يوصي W3C باستخدام العلامة <object>. حتى في XHTML2، يتم استبدال <img> بـ <object>. رمز إدراج الفلاش باستخدام طريقة <object> هو:
وفيما يلي المحتوى المقتبس: <object type = "application/x-shockwave-flash" data = "test.swf" width = "200" height = "100"> <parm name = "movie" value = "test.swf /> </object> |
ومع ذلك، لا يمكن عرض هذه الطريقة بشكل صحيح على IE5-IE6/Win (لا يمكن تشغيلها بشكل مستمر ولا يمكن تشغيلها حتى يتم تنزيلها)، ولكن يمكن عرضها بشكل صحيح على الإصدارات الأقل. لاحقًا، أدت طريقة ضبط ملف فلاش صغير أولاً ثم تضمين ملف فلاش كبير إلى حل مشكلة التشغيل المستمر. ومع ذلك، في IE5 والإصدارات الأحدث، لا يزال الفلاش غير قابل للعرض في بعض الأحيان.
3. التدابير المؤقتة الحالية
إذن، ما الذي يجب عليك فعله ليس فقط للامتثال للمعايير ولكن أيضًا لعرض الفلاش بشكل صحيح في جميع المتصفحات؟ كيف يجتاز موقع ماكروميديا التحقق من W3c؟
فكر بعض المصممين في استخدام JavaScript لإخفاء علامات <embed> غير القانونية.
وفيما يلي المحتوى المقتبس: <script type="text/javascript "> if (navegiator . mimeTypes && navigator . mimeTypes["application/x-shockwave-flash"] { document . write('<embed src="test . swf" ... |
هذا هو الحل الأفضل حاليا. يجب عليك إدراج الفلاش واستخدام js للاتصال به. يمكن لهذه الطريقة خداع برنامج التحقق W3C والتحقق من مرور الصفحة. ولكن هذا مجرد "غش"، ولا يفي بالمعايير حقًا.
كيف يفعل ماكروميديا ذلك؟
وفيما يلي المحتوى المقتبس: <!-- $RCSfile: FlashDetection2k.pm,v $ $Revision: 1.68 $ : يشير رأس القبول في متصفحك إلى أن لديك Flash 6,0,65,0 أو أفضل، لذا فأنت موافق على فيلم Flash 6 هذا، ها هو يأتي --> |
ويتبع نهجا توفيقيا:
(1) أولاً، تحدد جافا سكريبت إصدار المتصفح وإصدار مشغل الفلاش؛
(2). إنشاء كود HTML ديناميكيًا في الخلفية وفقًا للإصدارات المختلفة.
لتبسيط الأمر، يتم استخدام الأسلوب <object> افتراضيًا. إذا لم يتمكن المتصفح من التعامل مع نوع MIME "application/x-shockwave-flash" للكائن، فإنه يقوم بإدراج العنصر الفرعي <embed>. بصراحة، هذا مشابه لاستخدام js لإخفاء <embed>، وهو أيضًا طريقة "غش"، ولكن هذه هي الطريقة الأكثر معيارًا وكمالًا التي يمكن القيام بها حاليًا.
إذا كنت تريد حقًا التخلي عن <embed>، فما عليك سوى الانتظار حتى يحصل متصفح IE على دعم أفضل لـ <object>، وربما حتى ظهور Longhorn.