আমি খুশি যে ব্রাউজারগুলি আমাদের চক্রান্তকারী স্ক্রিপ্টগুলি এবং এর মতো থেকে বাঁচাতে যত্ন করে। আইই ব্রাউজারে এমন কিছু দেয় যা খুশি হয় না যা একটি সাধারণ স্টাইল-ফিক্সটিকে হ্যাক-অ্যাটাকের মতো দেখায়!
আমি ফাইল-ইনপুট উপস্থাপনের জন্য একটি <স্প্যান> ব্যবহার করেছি যাতে আমি <ইনপুট> এর পরিবর্তে <বিভাজন> (আবার আই আই এর কারণে) উপযুক্ত স্টাইলিং প্রয়োগ করতে পারি। এখন এই আইই এর কারণে ব্যবহারকারীকে এমন একটি মান সহ একটি পথ দেখাতে চান যা কেবল তাদের রক্ষণাবেক্ষণের জন্য এবং খুব কম সংক্ষেপে (যদি তাদের পুরোপুরি ভয় না দেয় তবে!!) ... আরও আই-ক্রপ!
যাইহোক, যারা এখানে ব্যাখ্যা পোস্ট করেছেন তাদের জন্য ধন্যবাদ: আইই ব্রাউজার সুরক্ষা: ইনপুট [টাইপ = "ফাইল"] তে পথ দায়ের করতে "ফকিপাথ" যুক্ত করা হচ্ছে , আমি একটি ছোটখাট ফিক্সার-উপরের একসাথে রেখেছি ...
নীচের কোডটি দুটি কাজ করে - এটি একটি লেটি আইই 8 বাগটি সংশোধন করে যেখানে আপলোড ফিল্ডের অনুলার অবধি অনচেঞ্জ ইভেন্টটি চালিত হয় না এবং এটি ক্লিন করা ফাইলপথ সহ এমন একটি উপাদান আপডেট করে যা ব্যবহারকারীকে ভয় পায় না।
// self-calling lambda to for jQuery shorthand "$" namespace
(function($){
// document onReady wrapper
$().ready(function(){
// check for the nefarious IE
if($.browser.msie) {
// capture the file input fields
var fileInput = $('input[type="file"]');
// add presentational <span> tags "underneath" all file input fields for styling
fileInput.after(
$(document.createElement('span')).addClass('file-underlay')
);
// bind onClick to get the file-path and update the style <div>
fileInput.click(function(){
// need to capture $(this) because setTimeout() is on the
// Window keyword 'this' changes context in it
var fileContext = $(this);
// capture the timer as well as set setTimeout()
// we use setTimeout() because IE pauses timers when a file dialog opens
// in this manner we give ourselves a "pseudo-onChange" handler
var ieBugTimeout = setTimeout(function(){
// set vars
var filePath = fileContext.val(),
fileUnderlay = fileContext.siblings('.file-underlay');
// check for IE's lovely security speil
if(filePath.match(/fakepath/)) {
// update the file-path text using case-insensitive regex
filePath = filePath.replace(/C:\\fakepath\\/i, '');
}
// update the text in the file-underlay <span>
fileUnderlay.text(filePath);
// clear the timer var
clearTimeout(ieBugTimeout);
}, 10);
});
}
});
})(jQuery);