গুগল ক্রোম ব্রাউজারে কোনও বাহ্যিক স্ক্রিপ্ট ফাইল অন্তর্ভুক্ত করার জন্য কি কোনও সহজ (দেশীয় সম্ভবত?) উপায় আছে?
বর্তমানে আমি এটি এইভাবে করছি:
document.head.innerHTML += '<script src="http://example.com/file.js"></script>';
গুগল ক্রোম ব্রাউজারে কোনও বাহ্যিক স্ক্রিপ্ট ফাইল অন্তর্ভুক্ত করার জন্য কি কোনও সহজ (দেশীয় সম্ভবত?) উপায় আছে?
বর্তমানে আমি এটি এইভাবে করছি:
document.head.innerHTML += '<script src="http://example.com/file.js"></script>';
উত্তর:
appendChild()
একটি আরও দেশীয় উপায়:
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'script.js';
document.head.appendChild(script);
TypeError: Property 'appendChild' of object #<HTMLHeadElement> is not a function
javascript_code
সরাসরি জাভাস্ক্রিপ্ট কোড উদ্বুদ্ধ করতে </ code> এ
আপনি কি কিছু এজেএক্স কাঠামো ব্যবহার করেন? JQuery ব্যবহার করে এটি হবে:
$.getScript('script.js');
আপনি যদি কোনও কাঠামো ব্যবহার না করে থাকেন তবে হারম্যানের উত্তর দেখুন।
(সম্ভবত এটি কেবলমাত্র একটি সাধারণ জিনিস ( বা এটি হ'ল ) করার জন্য jQuery ব্যবহার করা ভাল নয় তবে আপনি যদি ইতিমধ্যে এটি লোড করে থাকেন তবে আপনি এটিও ব্যবহার করতে পারেন I আমি এমন ওয়েবসাইটগুলি দেখেছি যেগুলিতে jQuery বোঝা রয়েছে যেমন বুটস্ট্র্যাপ সহ তবে এখনও DOM API সরাসরি এমনভাবে ব্যবহার করুন যা ইতিমধ্যে লোড হওয়া jQuery এর পরিবর্তে সর্বদা পোর্টেবল হয় না, এবং অনেক লোক এমনকি getElementById()
সমস্ত ব্রাউজারে অবিচ্ছিন্নভাবে কাজ করে না এই বিষয়টি সম্পর্কে সচেতন নয় - দেখুন বিশদগুলির জন্য এই উত্তরটি দেখুন। )
আমি এই উত্তরটি লেখার পরে বছর হয়ে গেছে এবং আমি মনে করি এটি এখানে এখানে উল্লেখ করা উপযুক্ত যা আজ আপনি ব্যবহার করতে পারেন:
পরিবর্তনশীল স্ক্রিপ্ট লোড করতে। যারা এই প্রশ্নটি পড়ছেন তাদের সাথে প্রাসঙ্গিক হতে পারে।
আরও দেখুন: গাই বেডফোর্ডের ফ্লুয়েট ২০১৪ আলোচনা: ইএস Mod মডিউলগুলির জন্য ব্যবহারিক কার্যপ্রবাহ ।
$.getScript('script.js');
বা এটি ব্যবহার করেন $.getScript('../scripts/script.js');
তবে এটি নথির সাথে সম্পর্কিত তবে এটি পরম ইউআরএলগুলিও লোড করতে পারে, যেমন eg $.getScript('https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.6.0/underscore.js');
আধুনিক ব্রাউজারে আপনি ব্যবহার করতে পারেন আনা রিসোর্স ডাউনলোড করতে ( মোজিলা ডক্স ) এবং তারপরে এটি কার্যকর করতে al
উদাহরণস্বরূপ Angular1 ডাউনলোড করতে আপনার টাইপ করতে হবে:
fetch('https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.min.js')
.then(response => response.text())
.then(text => eval(text))
.then(() => { /* now you can use your library */ })
eval
নিম্নলিখিত বার্তাগুলির সাথে ব্যবহার বন্ধ করে দিয়েছে: VM1929:11 Uncaught (in promise) EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'self' blob: filesystem: chrome-extension-resource:".
ক্রোমে, আপনার সেরা বিকল্পটি বিকাশকারী সরঞ্জামগুলির সূত্রগুলির অধীনে স্নিপেট ট্যাব হতে পারে।
এটি আপনাকে কোড লিখতে এবং চালানোর অনুমতি দেয়, উদাহরণস্বরূপ, প্রায়: ফাঁকা পৃষ্ঠায়।
এখানে আরও তথ্য: https://developers.google.com/web/tools/chrome-devtools/debug/snippets/?hl=en
@ Maciej-bukowski উপরে the এর উত্তরের অনুসরণ হিসাবে , আধুনিক ব্রাউজারগুলিতে এখন (বসন্ত 2017) যা অ্যাসিঙ্ক সমর্থন করে / অপেক্ষায় থাকে আপনি নিম্নোক্তভাবে লোড করতে পারেন। এই উদাহরণে আমরা লোড html2 ক্যানভাস লাইব্রেরি লোড করুন:
async function loadScript(url) {
let response = await fetch(url);
let script = await response.text();
eval(script);
}
let scriptUrl = 'https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.min.js'
loadScript(scriptUrl);
আপনি যদি স্নিপেট চালনা করেন এবং তারপরে আপনার ব্রাউজারের কনসোলটি খোলেন আপনার এইচটিএমএল 2 ক্যানভাস () এখন ফাংশনটি সংজ্ঞায়িত করা উচিত।
var el = document.createElement("script"),
loaded = false;
el.onload = el.onreadystatechange = function () {
if ((el.readyState && el.readyState !== "complete" && el.readyState !== "loaded") || loaded) {
return false;
}
el.onload = el.onreadystatechange = null;
loaded = true;
// done!
};
el.async = true;
el.src = path;
var hhead = document.getElementsByTagName('head')[0];
hhead.insertBefore(el, hhead.firstChild);
যদি কেউ, হিপি স্ক্রিপ্ট স্ক্রিপ্ট-এসসিআর "বিষয়বস্তু সুরক্ষা নীতি" লঙ্ঘন করে বা "অনিরাপদ-কারণ" অনুমোদিত নয় "লোড করতে ব্যর্থ হয় তবে আমি আমার সুন্দর-ছোট মডিউল-ইনজেক্টরটিকে একটি ডিভাইস স্নিপেট হিসাবে ব্যবহার করার পরামর্শ দেব, তাহলে আপনি এটির মতো লোড করতে সক্ষম হবেন:
imports('https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js')
.then(()=>alert(`today is ${moment().format('dddd')}`));
<script src="https://raw.githack.com/shmuelf/PowerJS/master/src/power-moduleInjector.js"></script>
এই সমাধান কাজ করে কারণ:
আমি কনসোলে কো নকআউট অবজেক্টটি লোড করতে এটি ব্যবহার করি
document.write("<script src='https://cdnjs.cloudflare.com/ajax/libs/knockout/3.5.0/knockout-3.5.0.debug.js'></script>");
অথবা স্থানীয়ভাবে হোস্ট করুন
document.write("<script src='http://localhost/js/knockout-3.5.0.debug.js'></script>");
টেম্পারমোনকি ইনস্টল করুন এবং @match
নির্দিষ্ট পৃষ্ঠার ইউআরএল (বা সমস্ত পৃষ্ঠার মিল :) সহ একটি (বা আরও) দিয়ে নিম্নলিখিত ইউজারস্ক্রিপ্ট যুক্ত করুন : https://*
যেমন:
// ==UserScript==
// @name inject-rx
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Inject rx library on the page
// @author Me
// @match https://www.some-website.com/*
// @require https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.5.4/rxjs.umd.min.js
// @grant none
// ==/UserScript==
(function() {
'use strict';
window.injectedRx = rxjs;
//Or even: window.rxjs = rxjs;
})();
যখনই আপনার কনসোলে লাইব্রেরির প্রয়োজন হবে বা স্নিপেটে নির্দিষ্ট ইউজারস্ক্রিপ্ট সক্ষম করুন এবং রিফ্রেশ করুন।
এই দ্রবণটি নামস্থান দূষণ রোধ করে । পৃষ্ঠায় বিদ্যমান বৈশ্বিক ভেরিয়েবলগুলির দুর্ঘটনাক্রমে ওভাররাইট এড়াতে আপনি কাস্টম নেমস্পেসগুলি ব্যবহার করতে পারেন।