কেবলমাত্র CSS ব্যবহার করে পৃষ্ঠায় কোনও আইফ্রেমের অভ্যন্তরে থাকা কোনও ডিভের শৈলীগুলি পরিবর্তন করা কি সম্ভব?
কেবলমাত্র CSS ব্যবহার করে পৃষ্ঠায় কোনও আইফ্রেমের অভ্যন্তরে থাকা কোনও ডিভের শৈলীগুলি পরিবর্তন করা কি সম্ভব?
উত্তর:
আপনার জাভাস্ক্রিপ্ট দরকার। এটি প্যারেন্ট পৃষ্ঠায় করা সমান, আপনি নিজের জাভাস্ক্রিপ্ট কমান্ডটি ইফ্রেমের নাম সহ উপস্থাপন করতে পারেন।
মনে রাখবেন, একই উত্স নীতিটি প্রযোজ্য, সুতরাং আপনি এটি কেবলমাত্র নিজের সার্ভার থেকে আসা কোনও আইফ্রেমে উপাদানটিতে করতে পারেন।
আমি এটিকে আরও সহজ করতে প্রোটোটাইপ কাঠামোটি ব্যবহার করি :
frame1.$('mydiv').style.border = '1px solid #000000'
অথবা
frame1.$('mydiv').addClassName('withborder')
সংক্ষেপে ন।
ক্রস-ডোমেন রিসোর্স সীমাবদ্ধতার কারণে যদি আপনার আইফ্রেমে লোড হওয়া পৃষ্ঠার উপর নিয়ন্ত্রণ না থাকে তবে আপনি এইচটিএমএল-এ এইচটিএমএল প্রয়োগ করতে পারবেন না an
হ্যাঁ. বিশদটির জন্য এই অন্যান্য থ্রেডটি একবার দেখুন: কীভাবে আইফ্রেমে সিএসএস প্রয়োগ করবেন?
var cssLink = document.createElement("link");
cssLink.href = "style.css";
cssLink.rel = "stylesheet";
cssLink.type = "text/css";
frames['frame1'].document.body.appendChild(cssLink);
frame1
আইফ্রেমের নাম নয়, আইডি নয়
আপনি iframe
প্রথমে সামগ্রীগুলি পুনরুদ্ধার করতে পারেন এবং তারপরে jQuery
যথাযথভাবে তাদের বিরুদ্ধে নির্বাচকগুলি ব্যবহার করতে পারেন ।
$("#iframe-id").contents().find("img").attr("style","width:100%;height:100%")
$("#iframe-id").contents().find("img").addClass("fancy-zoom")
$("#iframe-id").contents().find("img").onclick(function(){ zoomit($(this)); });
শুভকামনা!
দ্রুত উত্তর: না, দুঃখিত।
এটি কেবল সিএসএস ব্যবহার করে সম্ভব নয়। স্টাইল করার জন্য আপনার অবশ্যই মূলত আইফ্রেমে সামগ্রী নিয়ন্ত্রণ করতে হবে। জাভাস্ক্রিপ্ট বা আপনার পছন্দের ওয়েব ভাষা ব্যবহার করার পদ্ধতি রয়েছে (যা সম্পর্কে আমি কিছুটা পড়েছি, তবে নিজের সাথে পরিচিত হওয়ার জন্য নয়) কিছু প্রয়োজনীয় স্টাইল গতিশীলভাবে সন্নিবেশ করানোর জন্য আপনার ইফ্রামের সামগ্রীতে সরাসরি নিয়ন্ত্রণের প্রয়োজন হবে যা এটি শোনাচ্ছে যেমন আপনার নেই।
জ্যাকুরিটি ব্যবহার করুন এবং উত্সটি লোড না হওয়া পর্যন্ত অপেক্ষা করুন, আমি এভাবেই অর্জন করেছি (ব্যবহৃত কৌণিক বিরতি, আপনি জাভাস্ক্রিপ্ট সেট অভ্যন্তরীণ পদ্ধতি ব্যবহার করতে পারেন):
var addCssToIframe = function() {
if ($('#myIframe').contents().find("head") != undefined) {
$('#myIframe')
.contents()
.find("head")
.append(
'<link rel="stylesheet" href="app/css/iframe.css" type="text/css" />');
$interval.cancel(addCssInterval);
}
};
var addCssInterval = $interval(addCssToIframe, 500, 0, false);
সম্ভবত আপনি যেভাবে ভাবছেন সেভাবে নয়। iframe <link>
সিএসএস ফাইলেও করতে হবে। এবং এটি জাভাস্ক্রিপ্ট দিয়েও আপনি এটি করতে পারবেন না যদি এটি অন্য কোনও ডোমেনে থাকে।
<iframe src="/source" link=css-stylesheet:"/css.css">
?
স্পষ্টতই এটি jQuery এর মাধ্যমে করা যেতে পারে:
$('iframe').load( function() {
$('iframe').contents().find("head")
.append($("<style type='text/css'> .my-class{display:none;} </style>"));
});
Uncaught DOMException: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin **** from accessing a cross-origin frame.
ইউজিন যেমন বলেছিল কাজ করার এক ধরণের হ্যাক-ইশ উপায় way আমি তার কোড অনুসরণ করে পৃষ্ঠার জন্য আমার কাস্টম সিএসএসের সাথে লিঙ্কিং শেষ করেছি। আমার সমস্যাটি হ'ল, একটি টুইটার টাইমলাইনের সাথে আপনাকে তাদের কোডকে একটি স্মিডজেন ওভাররাইড করতে টুইটারের কিছুটা পার্শ্বচলাচল করতে হবে। এখন আমাদের কাছে এটির সাথে আমাদের CSS, রোলিং টাইমলাইন রয়েছে, আই আই লার্জার হরফ, যথাযথ লাইনের উচ্চতা এবং স্ক্রোলবারটি তাদের সীমাগুলির চেয়েও উচ্চতার জন্য লুকানো।
var c = document.createElement('link');
setTimeout(frames[0].document.body.appendChild(c),500); // Mileage varies by connection. Bump 500 a bit higher if necessary
শুধু এটি যোগ করুন এবং সমস্ত কাজ ভাল:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
হ্যাঁ, জটিল যদিও এটি সম্ভব। আপনার পৃষ্ঠার মূল পৃষ্ঠায় এইচটিএমএল প্রিন্ট / প্রতিধ্বনিত করতে হবে তারপরে একটি সিএসএস বিধি পরিবর্তন ফাংশন প্রয়োগ করুন। উপরে বর্ণিত একই উদাহরণগুলি ব্যবহার করে, আপনি মূলত পৃষ্ঠায় ডিভগুলি সনাক্ত করার একটি পার্সিং পদ্ধতি ব্যবহার করবেন এবং তারপরে এটিতে সিএসএস প্রয়োগ করুন এবং তারপরে এটি পুনরায় মুদ্রণ / প্রতিধ্বনিত করে শেষ ব্যবহারকারীর কাছে। আমার এটির দরকার নেই তাই আমি অন্য ওয়েবপৃষ্ঠার সিএসএসের প্রতিটি আইটেমটিতে এফটিপ্লাই করতে সেই ফাংশনটি কোড করতে চাই না।
তথ্যসূত্র:
বিভিন্ন সমাধানের সংমিশ্রণ, এটি আমার জন্য কাজ করেছিল।
$(document).ready(function () {
$('iframe').on('load', function() {
$("iframe").contents().find("#back-link").css("display", "none");
});
});
ক্লায়েন্ট পক্ষ থেকে সম্ভব নয়। একটি জাভাস্ক্রিপ্ট ত্রুটি উত্থাপিত হবে "ত্রুটি: আইফ্রেমে আপনার ডোমেনের অংশ না হওয়ায় সম্পত্তি" নথি "" অ্যাক্সেসের অনুমতি অস্বীকার করা হয়েছে। একমাত্র সমাধান হ'ল সার্ভার সাইড কোড থেকে পৃষ্ঠাটি আনা এবং প্রয়োজনীয় সিএসএস পরিবর্তন করা।