কোনও আইফ্রেমে বর্তমান ইউআরএল পাওয়ার সহজ উপায় কি আছে?
দর্শক একাধিক সাইটের মধ্য দিয়ে যাচ্ছিল। আমি অনুমান করছি যে আমি জাভাস্ক্রিপ্টে কিছু ব্যবহার করব।
উত্তর:
সুরক্ষার কারণে আপনি কেবলমাত্র ইউআরএল যতক্ষণ না ইফ্রেমের বিষয়বস্তু এবং রেফারেন্সিং জাভাস্ক্রিপ্ট একই ডোমেন থেকে পরিবেশন করতে পারবেন। যতক্ষণ না এটি সত্য, এর মতো কিছু কাজ করবে:
document.getElementById("iframe_id").contentWindow.location.href
যদি দুটি ডোমেন মিলে যায় না তবে আপনি ক্রস সাইট রেফারেন্স স্ক্রিপ্টিং সুরক্ষা সীমাবদ্ধতায় চলে যাবেন।
অনুরূপ প্রশ্নের উত্তরও দেখুন ।
sandbox="allow-same-origin"
আইফ্রেমে এট্রিবিউটটি যুক্ত করি তবে কী হবে ?
যদি আপনার আইফ্রেমে অন্য ডোমেন, (ক্রস ডোমেন) থেকে থাকে তবে অন্যান্য উত্তরগুলি আপনাকে সাহায্য করবে না ... আপনার কেবল এটি ব্যবহার করতে হবে:
var currentUrl = document.referrer;
এবং - এখানে আপনি মূল url পেয়েছেন!
আশা করি এটি আপনার ক্ষেত্রে, ঠিক একই সমস্যার সাথে ভুগতে পেরে কিছুটা সহায়তা করবে এবং প্যারেন্ট উইন্ডো এবং আইফ্রেমের মধ্যে ডেটা ভাগ করে নেওয়ার জন্য কেবল স্থানীয় স্টোরেজ ব্যবহার করেছি। সুতরাং প্যারেন্ট উইন্ডোতে আপনি এটি করতে পারেন:
localStorage.setItem("url", myUrl);
এবং কোডে যেখানে iframe উত্সটি কেবল স্থানীয় স্টোরেজ থেকে এই ডেটাটি পান:
localStorage.getItem('url');
আমাকে অনেক সময় বাঁচিয়েছে। যতদূর আমি দেখতে পাচ্ছি একমাত্র শর্ত হ'ল প্যারেন্ট পৃষ্ঠার কোড অ্যাক্সেস। আশা করি এটি কারও সাহায্য করবে।
আপনি যদি iframe প্রসঙ্গে থাকেন,
আপনি করতে পারে
const currentIframeHref = new URL(document.location.href);
const urlOrigin = currentIframeHref.origin;
const urlFilePath = decodeURIComponent(currentIframeHref.pathname);
আপনি যদি প্যারেন্ট উইন্ডো / ফ্রেমে থাকেন তবে আপনি https://stackoverflow.com/a/938195/2305243 এর উত্তর ব্যবহার করতে পারেন , যা
document.getElementById("iframe_id").contentWindow.location.href
ব্লব url hrefs নিয়ে আমার একটি সমস্যা ছিল। সুতরাং, iframe সম্পর্কিত একটি রেফারেন্স সহ, আমি স্রেফ iframe এর src বৈশিষ্ট্য থেকে একটি url উত্পাদন করেছি:
const iframeReference = document.getElementById("iframe_id");
const iframeUrl = iframeReference ? new URL(iframeReference.src) : undefined;
if (iframeUrl) {
console.log("Voila: " + iframeUrl);
} else {
console.warn("iframe with id iframe_id not found");
}
যারা এর সাথে লড়াই করছেন তাদের জন্য কিছু অতিরিক্ত তথ্য:
আপনি যদি লোড হওয়ার আগেই iframe থেকে URL পাওয়ার চেষ্টা করছেন তবে আপনি নালাগুলি পাচ্ছেন values আমি জাভাস্ক্রিপ্টে পুরো আইফ্রেমে তৈরি করে এবং অন্লোড ফাংশনটির সাথে আমার প্রয়োজনীয় মানগুলি পেয়ে এই সমস্যাটি সমাধান করেছি:
var iframe = document.createElement('iframe');
iframe.onload = function() {
//some custom settings
this.width=screen.width;this.height=screen.height; this.passing=0; this.frameBorder="0";
var href = iframe.contentWindow.location.href;
var origin = iframe.contentWindow.location.origin;
var url = iframe.contentWindow.location.url;
var path = iframe.contentWindow.location.pathname;
console.log("href: ", href)
console.log("origin: ", origin)
console.log("path: ", path)
console.log("url: ", url)
};
iframe.src = 'http://localhost/folder/index.html';
document.body.appendChild(iframe);
একই-উত্স নীতিমালার কারণে, "ক্রস অরিজিন" ফ্রেমগুলিতে অ্যাক্সেস করার সময় আমার সমস্যা হয়েছিল - আমি সমাধান করেছি যে আমার ডিস্ক থেকে সরাসরি সমস্ত ফাইল চালানোর পরিবর্তে স্থানীয়ভাবে একটি ওয়েবসার্ভার চালিয়ে। এই সমস্ত কাজ করার জন্য, আপনাকে একই প্রোটোকল, হোস্টনাম এবং মূল হিসাবে পোর্ট সহ iframe অ্যাক্সেস করা দরকার। আমার ডিস্ক থেকে সমস্ত ফাইল চালানোর সময় এগুলির মধ্যে কোনটি নিখোঁজ ছিল / তা নিশ্চিত নয়।
এছাড়াও, অবস্থানের বিষয়গুলিতে আরও: https://www.w3schools.com/JSREF/obj_location.asp
যদি আপনি এমন একটি আইফ্রেমের অভ্যন্তরে থাকেন যা ক্রস ডোমেন এসসিআর নেই, বা এসসিআর খালি রয়েছে:
তারপরে:
function getOriginUrl() {
var href = document.location.href;
var referrer = document.referrer;
// Check if window.frameElement not null
if(window.frameElement) {
href = window.frameElement.ownerDocument.location.href;
// This one will be origin
if(window.frameElement.ownerDocument.referrer != "") {
referrer = window.frameElement.ownerDocument.referrer;
}
}
// Compare if href not equal to referrer
if(href != referrer) {
// Take referrer as origin
return referrer;
} else {
// Take href
return href
}
}
যদি আপনি ক্রস ডোমেন src সহ একটি iframe এর ভিতরে থাকেন:
তারপরে:
function getOriginUrl() {
var href = document.location.href;
var referrer = document.referrer;
// Detect if you're inside an iframe
if(window.parent != window) {
// Take referrer as origin
return referrer;
} else {
// Take href
return href;
}
}