क्या आइफ्रेम से वर्तमान URL प्राप्त करने का एक सरल तरीका है?
दर्शक कई साइटों से गुजर रहा होगा। मुझे लगता है मैं जावास्क्रिप्ट में कुछ का उपयोग किया जाएगा अनुमान लगा रहा हूँ।
जवाबों:
सुरक्षा कारणों से, आप केवल तब तक url प्राप्त कर सकते हैं, जब तक कि iframe की सामग्री, और संदर्भित जावास्क्रिप्ट, एक ही डोमेन से दिए गए हों। जब तक यह सच है, इस तरह से कुछ काम करेगा:
document.getElementById("iframe_id").contentWindow.location.href
यदि दो डोमेन बेमेल हैं, तो आप क्रॉस साइट संदर्भ सुरक्षा सुरक्षा प्रतिबंधों में चलेंगे।
एक ऐसे ही सवाल का जवाब भी देखें ।
sandbox="allow-same-origin"
iFrame में विशेषता जोड़ते हैं ?
यदि आपका iframe किसी अन्य डोमेन, (क्रॉस डोमेन) से है, तो अन्य उत्तर आपकी सहायता करने वाले नहीं हैं ... आपको बस इसका उपयोग करने की आवश्यकता होगी:
var currentUrl = document.referrer;
और - यहाँ आपको मुख्य यूआरएल मिला है!
आशा है कि यह आपके मामले में कुछ मदद करेगा, मुझे ठीक उसी समस्या का सामना करना पड़ा, और सिर्फ स्थानीय विंडो का उपयोग पेरेंट विंडो और आइफ्रेम के बीच डेटा साझा करने के लिए किया। तो मूल विंडो में आप कर सकते हैं:
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 प्राप्त करने का प्रयास कर रहे हैं, तो आपको शून्य मान मिलेंगे। मैंने जावास्क्रिप्ट में संपूर्ण iframe बनाकर और onLoad फ़ंक्शन के साथ आवश्यक मान प्राप्त करके इस समस्या को हल किया:
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
यदि आप एक iframe के अंदर हैं, जिसमें क्रॉस डोमेन src नहीं है, या src खाली है:
फिर:
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
}
}
यदि आप क्रॉस डोमेन के साथ एक 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;
}
}