জেএইচটিএমএল: স্ক্রিপ্ট () এবং $ ডক্ট-> অ্যাডস্ক্রিপ্টের মধ্যে পার্থক্য কী?


10

আমি সম্প্রতি একটি মডিউল তৈরি করেছি যার <head>প্রতিটি পৃষ্ঠার নির্দিষ্ট জেএস এবং সিএসএস ফাইলগুলি ইনজেকশনের প্রয়োজন । প্রথমদিকে, আমি ব্যবহার করেছি:

$doc =& JFactory::getDocument();
$doc->addScript(JURI::base(true).'/modules/mod_x/js/mod_x.js');

তবে, আমি লক্ষ্য করেছি যে যখন ক্যাচিং সক্ষম করা হয়েছিল তখন সাইটটি উভয় থেকে ক্যাশেড সংস্করণ /cacheএবং নন-ক্যাশেড সংস্করণ উভয়ই লোড করেছিল /modules/mod_x/js/, যার ফলে জেএস ত্রুটি হয়েছিল।

আমি যখন এটিকে পরিবর্তন করেছি:

JHtml::script(Juri::base().'modules/mod_x/js/mod_x.js');

এই ত্রুটিগুলি সমাধান করে, স্ক্রিপ্টটি একবার ক্যাশে থেকে লোড করা হয়েছিল।

আমি ডক্সে পড়েছি যে addScriptপদ্ধতিটি পদ্ধতির চেয়ে 'নিম্ন স্তরের' ছিল JHtml:script, তবে এটি বলার বাইরে ...

অবশ্যই, আপনাকে কয়েকটি পদক্ষেপের ম্যানুয়ালি কোডিংও করতে হবে [যা জেএইচটিএমএল: স্ক্রিপ্ট আপনার জন্য করে] যা উপরের [জেএইচটিএমএল: স্ক্রিপ্ট পদ্ধতি] ব্যবহার করে স্বয়ংক্রিয়ভাবে সম্পন্ন হবে [যদি আপনি অ্যাডস্ক্রিপ্ট ব্যবহার করেন]।

... আরও বিস্তারিত দেওয়া হয় না।

তাহলে পার্থক্য কী? আমি ধরে নিচ্ছি JHtml:scriptঅবশেষে addScriptকোনও সময়ে কোনও নথির অবজেক্টে কল করি তবে অন্যান্য মধ্যস্থতাকারী পদক্ষেপগুলি কি আগে নেওয়া হয়?


4
আমি চেষ্টা করে আপডেট করার জন্য জুমলা ডক্সকে কিছুটা আবার লিখেছি - দেখুন এখন এটি আরও অর্থবোধ করে?
জর্জ উইলসন

1
@ জর্জিওলসন জুমলা ডক্সটি সম্প্রতি সম্প্রতি উন্নত হয়েছে। ধন্যবাদ :)
ট্রায়হার্ডার

স্টাইলশীট সম্পর্কে সংশ্লিষ্ট প্রশ্ন: joomla.stackexchange.com/q/10062/5239
Flimm

উত্তর:


8

JHtml::scriptঅতিরিক্ত যুক্তি অন্তর্ভুক্ত আছে। এপিআই রেফারেন্সের জন্য http://api.joomla.org/cms-3/class/JHtml.html# মৈথুন_স্ক্রিপ্ট দেখুন

ডিফল্টরূপে এটি ডিবাগ সেটিং এবং ব্রাউজার ব্যবহৃত এবং মেলানো স্ক্রিপ্ট লোড করবে। উদাহরণস্বরূপ, যখন ডিবাগ সক্ষম করা থাকে এটি উপস্থিত থাকলে ফাইলটির একটি সঙ্কুচিত সংস্করণ লোড করবে।

এখানে optionচ্ছিক সেটিংস রয়েছে যা একটি টেম্পলেট স্তর এবং অন্যান্য জিনিসগুলিতে ফাইলটিকে ওভাররাইড করতে দেয়।

JHtml::script()ওভাররাইডগুলিকে কীভাবে ব্যবহার করতে হয় তার জন্য মাইকেল বাকার একটি ভাল গাইড লিখেছিলেন : http://www.babdev.com/blog/139-use-the-media-folder-allow-overridable-media

রেফারির জন্য রেপোতে কার্য: https://github.com/joomla/joomla-cms/blob/stasing/libraries/cms/html/html.php#L659

অফিসিয়াল ডক পেজ যা এখন জর্জ দ্বারা আপডেট করা হয়েছে: http://docs.joomla.org/J3.3 : অ্যাডিং_ জাভা স্ক্রিপ্ট_আর_সিএসএস_তে_ পৃষ্ঠা_পৃষ্ঠা


2
উত্তরের জন্য ধন্যবাদ. এপিআই রেফারেন্সটি মোটামুটি বিচ্ছিন্ন - সেখানে ডিটেক্ট_ব্রোজার এবং ডিটেক্ট_ডিগগের প্রভাবগুলির আরও বিস্তৃত ব্যাখ্যা রয়েছে এবং আপনি যখন 'alচ্ছিক সেটিংস' এবং 'অন্যান্য জিনিসগুলি' বলে থাকেন তখন কোথাও এই নথিভুক্ত করা হয়?
কোডিংহ্যান্ডস 15

আমি মাইকেলের একটি নিবন্ধে একটি লিঙ্ক যুক্ত করেছি যা ওভাররাইড অংশটি ব্যাখ্যা করে। ডিবাগ এবং ব্রাউজার অংশ হিসাবে, আমি মনে করি না যে এখানে কোনও ডকুমেন্টেশন আছে। তার জন্য আপনাকে কোডটি পড়তে হবে।
বাকুয়াল

1
সুতরাং যদি উদাহরণস্বরূপ কোনও সঙ্কুচিত এবং সংকুচিত জেএস ফাইল থাকে এবং ডিবাগ চালু থাকে তবে এটি ফাইল নাম-আনম্প্রেসড.জেএস লোড করবে এবং ডিবাগ বন্ধ হয়ে গেলে কেবল ফাইলনাম.জেগুলি লোড করবে। ব্রাউজারের জন্য যখন এটি ডিবাগ অফ করা হয় তখন ফাইলের নাম-ব্রাউজার.জেএস এর পরে ফাইলের নাম-ব্রাউজার-ব্রাউজার্সওশন.জেএস ইত্যাদির সন্ধান করা হয়
জর্জ উইলসন

2
এটি একটি ক্র্যাকিং উত্তর - ধন্যবাদ @ বাকুয়াল এবং @ জর্জভিসন!
কোডিংহ্যান্ডস

1
ভুলে যাবেন না যে জে এইচটিএমএল কোনও স্ক্রিপ্টের MD5sum বা স্টাইলশিটকে ক্যাশে-বুস্টে যুক্ত করতে পারে।
ফ্লিম

4

দুটি কথায়:

  • JHtml::script() - আপনাকে নির্দিষ্ট স্ক্রিপ্টটি ওভাররাইড করার অনুমতি দেয় (ইতিমধ্যে জেডি ডকুমেন্টের সাথে সংযুক্ত ব্যতীত), কিছু কারণ থেকে নির্ভর করে (@ বকুয়াল উত্তর দেখুন);
  • $doc->addScript() - ওভাররাইড পরীক্ষা না করে সরাসরি ডকুমেন্টের সাথে স্ক্রিপ্ট সংযুক্ত করুন;

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

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