এসসিআর এবং সামগ্রী সহ স্ক্রিপ্ট-ট্যাগ বলতে কী বোঝায়?


122

গুগলস +1 বোতামের উদাহরণ:

<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
      {"parsetags": "explicit"}
</script>

স্ক্রিপ্ট ট্যাগটিতে একটি সিআরসি-অ্যাট্রিবিউট এবং সামগ্রী রয়েছে। এর অর্থ কী এবং এটি কীভাবে কাজ করে?


ফায়ারব্যাগ লাইট এই পদ্ধতিটি ব্যবহার করে: getfirebug.com/firebuglite
ব্র্যাড

উত্তর:


71

বিভিন্ন ব্রাউজার এটিকে আলাদাভাবে আচরণ করে। কিছু srcত্রুটি ছাড়াই অন্তর্ভুক্ত করা হয় শুধুমাত্র যদি কন্টেন্ট চালায় । কেউ কেউ srcসাফল্য নির্বিশেষে স্ক্রিপ্টটি অন্তর্ভুক্ত করার চেষ্টা করার পরে চালায় । যেহেতু এই আচরণটি অবিশ্বাস্য (এবং এইচটিএমএল 5 এ নিষিদ্ধ ) তাই এটি এড়ানো উচিত।

গুগল কোনও নির্দিষ্ট আচরণের উপর নির্ভর করছে না। যেহেতু বিষয়বস্তু কেবল একটি বস্তু আক্ষরিক (একটি মান), তাই এটি কার্যকর করা নিঃশব্দ ত্রুটির কারণ ব্যতীত অন্য কিছুই করতে পারে না। গুগলের কোডটি scriptট্যাগের বিষয়বস্তুগুলিতে নিজেই নজর রাখে এবং এর ভিত্তিতে এর আচরণটি সামঞ্জস্য করে।


2
স্ক্রিপ্টের ডিওএমের মধ্য দিয়ে যাওয়ার চেয়ে স্ক্রিপ্টের নিজস্ব স্ক্রিপ্ট ট্যাগের (বিশেষত) বিষয়বস্তু দেখার জন্য কি কোনও চালক উপায় আছে?
কার্ল নচেটেল

11
যে ব্রাউজারগুলির সাথে আমি কাজ করেছি সেগুলিতে, স্ক্রিপ্ট সামগ্রীটি কখনই কার্যকর করা হবে না যদি srcবৈশিষ্ট্যটি উপস্থিত থাকে, এবং প্রকৃতপক্ষে সত্যিকার অর্থে কোনও বস্তুগত নয়, সেই কোডটি SyntaxErrorযদি মৃত্যুদন্ড কার্যকর করা হয় তবে এটি কেবল "JSON পাঠ্য" যা স্ক্রিপ্টটি ব্যবহার করবে নিজেই পরে
সিএমএস

2
@ কার্ল একটি বাহ্যিক .js ফাইলের মধ্যে ব্যবহৃত হয়েছে, এটি আপনাকে বর্তমানে কার্যকর করা <script> নোডের বিষয়বস্তু দেবে: s=document.getElementsByTagName('script'); text = s[s.length-1].innerHTML; আমি মনে করি না যে কোনও স্ক্রিপ্ট নোডের বিষয়বস্তু আনার কোনও উপায় আছে যা DOM স্পর্শ করে না ।
ডিজিটালবাথ

@ সিএমএস আইই ব্যতীত সমস্ত ব্রাউজারে কাজ করে। আপনি এটি এখানে
জোসে ফাতি

1
@ জোস - আপনার উদাহরণ সিএমএস যা উল্লেখ করছে তা নয়। যদি কোডটি স্ট্যান্ড একা বিবৃতি হিসাবে চালানো হয় তবে এটি একটি সিনট্যাক্স ত্রুটি। তোমার উদাহরণঃ (এবং Google এর) "কাজ করে" শুধুমাত্র কারণ স্ক্রিপ্ট উপাদান সামগ্রীর কারণে ingnored হয় src অ্যাট্রিবিউট।
রবজি

23

যদি কোনও স্ক্রিপ্ট উপাদানটির একটি এসসিআর বৈশিষ্ট্য থাকে তবে সামগ্রীটি অবশ্যই উপেক্ষা করা উচিত , অন্য কোনও আচরণ অ-সঙ্গতিপূর্ণ।

এটা তোলে ব্লগে (হিসাবে একটি হ্যাক) উপাদান বুদ্ধিমান যে এটি মূল্যায়ন করা হইনি সামগ্রীটি করা, তারপর করে DOM পদ্ধতি ব্যবহার একটি স্ট্রিং হিসাবে বিষয়বস্তু পাওয়ার এবং হয় বলা হয়েছে Eval অথবা একটি নতুন স্ক্রিপ্ট উপাদানের ক্ষেত্রে এটি সন্নিবেশ। এগুলির কোনওটিই একটি ভাল ধারণা নয়।


4
কেন এটি একটি ভাল ধারণা নয়? এটি যদি তৃতীয় পক্ষের প্লাগইন আরম্ভ করতে ব্যবহৃত হয়?
thekingoftruth

13

এইচটিএমএল 5 খসড়া স্পেসিফিকেশন অনুসারে , বৈশিষ্ট্যযুক্ত <script>উপাদানগুলির মধ্যে srcকেবল মন্তব্য-আউট কোড থাকা উচিত, যা স্ক্রিপ্টের জন্য ডকুমেন্টেশন দেওয়ার উদ্দেশ্যে। যদিও গুগল যদিও এই স্পেসিফিকেশনটি মেনে চলেছে তেমনটি উপস্থিত হয় না।


13

স্ক্রিপ্টটি লোড হওয়ার পরে, এটির সামগ্রীটি অ্যাক্সেস করার জন্য এটি নিজস্ব স্ক্রিপ্ট ট্যাগের মধ্যে দেখায়।

এটি এর অনুরূপ কিছু কোড ব্যবহার করবে:

var scripts = document.getElementsByTagName("script");
var data = eval(scripts[scripts.length - 1].innerHTML);

জন রেজিগের সৌজন্যে ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.