আইআই-তে আপনার লিঙ্কটিতে ক্লিক করার পরে বা পৃষ্ঠায় কোনও ফর্ম জমা দেওয়ার পরে অ্যানিমেটেড জিআইএফ এর অ্যানিমেটেড চালিয়ে যাওয়ার বিষয়ে কেউ কি কাজ জানেন? অন্যান্য ব্রাউজারগুলিতে এটি কাজ করে।
ধন্যবাদ।
আইআই-তে আপনার লিঙ্কটিতে ক্লিক করার পরে বা পৃষ্ঠায় কোনও ফর্ম জমা দেওয়ার পরে অ্যানিমেটেড জিআইএফ এর অ্যানিমেটেড চালিয়ে যাওয়ার বিষয়ে কেউ কি কাজ জানেন? অন্যান্য ব্রাউজারগুলিতে এটি কাজ করে।
ধন্যবাদ।
উত্তর:
গৃহীত সমাধানটি আমার পক্ষে কার্যকর হয়নি।
আরও কিছু গবেষণার পরে আমি এই কাজটি পুরোপুরি দেখতে পেয়েছি এবং এটি আসলে কাজ করে।
এখানে এর সংক্ষিপ্তসার:
function showProgress() {
var pb = document.getElementById("progressBar");
pb.innerHTML = '<img src="./progress-bar.gif" width="200" height ="40"/>';
pb.style.display = '';
}
এবং আপনার এইচটিএমএলে:
<input type="submit" value="Submit" onclick="showProgress()" />
<div id="progressBar" style="display: none;">
<img src="./progress-bar.gif" width="200" height ="40"/>
</div>
সুতরাং ফর্মটি জমা দেওয়ার সময় <img/>
ট্যাগটি sertedোকানো হয় এবং কোনও কারণে এটি অ্যানিমেশন ইস্যু দ্বারা প্রভাবিত হয় না।
ফায়ারফক্সে পরীক্ষা করা হয়েছে, অর্থাৎ,, অর্থাৎ and এবং ie8।
code
<div id = "img_content"> <img id = 'aj_loader' src = 'اثاثون / 2631.gif' শৈলী = "প্রদর্শন: কিছুই নয়;" /> </div> এবং তারপরে: code
$ ( "# img_content") HTML ($ ( "# img_content") এইচটিএমএল ()।)।
পুরানো প্রশ্ন, তবে সহ গুগলারের জন্য এটি পোস্ট করা:
স্পিন.জেএস এই ব্যবহারের ক্ষেত্রে কাজ করে: http://fgnass.github.com/spin.js/
আইই ধরে নিয়েছে যে কোনও লিঙ্কে ক্লিক করা একটি নতুন নেভিগেশনকে হেরাল্ড করে যেখানে বর্তমান পৃষ্ঠার সামগ্রীগুলি প্রতিস্থাপন করা হবে। এটির জন্য পারফর্ম করার প্রক্রিয়ার অংশ হিসাবে এটি জিআইএফগুলি অ্যানিমেটেড কোডটি থামায়। আমি সন্দেহ করি যে এটি সম্পর্কে আপনারা যা কিছু করতে পারেন (যদি আপনি আসলে নেভিগেট না করেন তবে অনক্লিক ইভেন্টে মিথ্যা ফিরতি ব্যবহার করুন)।
এখানে একটি জেএসফিডাল যা পদ্ধতি = "পোস্ট" দিয়ে জমা দেওয়ার ফর্মটিতে ঠিক সূক্ষ্মভাবে কাজ করে। ফর্ম জমা দেওয়ার ইভেন্টে স্পিনার যুক্ত করা হয়।
$("form").bind("submit", onFormSubmit);
function onFormSubmit() {
setTimeout(showSpinner, 1);
}
function showSpinner() {
$("body").append($('<img id="spinner" src="spinner.gif" alt="Spinner" />'));
}
আমি এই পোস্টে এসেছি, এবং এর উত্তর আগেই দেওয়া হয়েছে, অনুভূত আমার এমন কিছু তথ্য পোস্ট করা উচিত যা আইই 10-তে নির্দিষ্ট এই সমস্যাটি সম্পর্কে আমাকে সহায়তা করেছিল এবং অন্যদেরকেও একই ধরণের সমস্যার সাথে এই পোস্টে আসতে সহায়তা করতে পারে।
আমি স্তম্ভিত হয়ে পড়েছিলাম কীভাবে অ্যানিমেটেড জিআইএফগুলি কেবল আইই 10 তে প্রদর্শিত হচ্ছে না এবং তারপরে এই রত্নটি খুঁজে পেয়েছিল।
Tools→ Internet Options→ Advanced→ MultiMedia→Play animations in webpages
আশাকরি এটা সাহায্য করবে.
beforeunload
বা অ্যানিমেটেড unload
একটি ফর্ম জমা দেওয়ার প্রক্রিয়া চলাকালীন লোডিং জিআইএফ দেখানোর চেষ্টা করার সময় আমি এই সমস্যার মুখোমুখি হয়েছি। এতে মজাদার একটি অতিরিক্ত স্তর ছিল যে ফর্মটি সঠিক ছিল কিনা তা নিশ্চিত করতে একই অনসুমিতকে একটি বৈধ চালক চালাতে হয়েছিল। সবার মতো (ইন্টারনেটে প্রতিটি আইআই / জিআইএফ ফর্ম পোস্টে) আমি লোডিং স্পিনারকে আইই-তে "স্পিন" করতে পারি না (এবং আমার ক্ষেত্রে, ফর্মটি বৈধতা / জমা দিন)। Http://www.west-wind.com এ পরামর্শ দেওয়ার সময় আমি ev13wt এর দ্বারা একটি পোস্ট পেয়েছি যাতে পরামর্শ দেওয়া হয়েছিল যে সমস্যাটি "... যে আইই চিত্রটি অ্যানিমেটেড হিসাবে রেন্ডার করে না যখন এটি রেন্ডার হয়েছিল। " যে বোধগম্য। তার সমাধান:
জিআইএফ যেখানে যাবে সেখানে ফাঁকা ছেড়ে যান এবং অনসামিত ফাংশনে উত্স সেট করতে জাভাস্ক্রিপ্ট ব্যবহার করুন - ডকুমেন্ট.জেটমেন্টমেন্টবাইআইডি ('লোডিংজিফ')। src = "জিআইএফ ফাইলের পথ"।
আমি এটি কীভাবে প্রয়োগ করেছি তা এখানে:
<script type="text/javascript">
function validateForm(form) {
if (isNotEmptyid(form.A)) {
if (isLen4(form.B)) {
if (isNotEmptydt(form.C)) {
if (isNumber(form.D)) {
if (isLen6(form.E)){
if (isNotEmptynum(form.F)) {
if (isLen5(form.G)){
document.getElementById('tabs').style.display = "none";
document.getElementById('dvloader').style.display = "block";
document.getElementById('loadingGif').src = "/images/ajax-loader.gif";
return true;
}
}
}
}
}
}
}
return false;
}
</script>
<form name="payo" action="process" method="post" onsubmit="return validateForm(this)">
<!-- FORM INPUTS... -->
<input type="submit" name="submit" value=" Authorize ">
<div style="display:none" id="dvloader">
<img id="loadingGif" src="" alt="Animated Image that appears during processing of document." />
Working... this process may take several minutes.
</div>
</form>
এটি আমার জন্য সমস্ত ব্রাউজারে ভাল কাজ করেছে!
আমি যা করেছি তা এখানে। আপনাকে যা যা করতে হবে তা হ'ল 10 টি চিত্র বলতে আপনার জিআইএফটি ভেঙে ফেলতে হবে ( এক্ষেত্রে আমি শুরু করে দিয়ে 01.gif
শেষ করেছি 10.gif
) এবং আপনি যে ডিরেক্টরিটি রেখেছেন তা নির্দিষ্ট করে দিন।
এইচটিএমএল:
<div id="tester"></div>
javascript:
function pad2(number) {
return (number < 10 ? '0' : '') + number
}
var
dirURL = 'path/to/your/images/folder',
ajaxLoader = document.createElement('img');
ajaxLoader.className = 'ajax-image-loader';
jQuery(document).ready(function(){
jQuery('#tester').append(ajaxLoader);
set(0);
});
function set(i) {
if (i > 10) i = 1;
img.src = dirURL + pad2(i) + '.gif';
setTimeout(function() {
set(++i);
}, 100);
}
এই পদ্ধতিটি আই 7, আই 8 এবং আই 9 এর সাথে কাজ করে (আপনি যে আই 9 ব্যবহার করতে পারেন তার জন্য বিকল্প spin.js
)।
দ্রষ্টব্য: আমি 6০ এর দশক থেকে ব্রাউজার চালানোর কোনও মেশিন না থাকায় আমি আইআই 6 তে এটি পরীক্ষা করিনি, যদিও পদ্ধতিটি এত সহজ তবে এটি সম্ভবত আই 6 এবং এর চেয়ে কম ক্ষেত্রেও কাজ করে।
এর সাথে সম্পর্কিত আমাকে একটি ফিক্সটি খুঁজতে হয়েছিল যেখানে স্টাইলশিটে স্টাইলিং রাখা হয়েছে তা নিশ্চিত করতে অ্যানিমেটেড জিআইএফগুলি ব্যাকগ্রাউন্ড চিত্র হিসাবে ব্যবহৃত হয়েছিল। একটি অনুরূপ ফিক্স আমার জন্য সেখানেও কাজ করেছিল ... আমার স্ক্রিপ্টটি এরকম কিছু হয়েছিল (গণিত ব্যাকগ্রাউন্ড স্টাইলটি সহজতর করার জন্য আমি jQuery ব্যবহার করছি - কীভাবে jQuery ছাড়াই এটি করা যায় তা অন্য পোস্টের বিষয়):
var spinner = <give me a spinner element>
window.onbeforeunload = function() {
bg_image = $(spinner).css('background-image');
spinner.style.backgroundImage = 'none';
spinner.style.backgroundImage = bg_image;
}
[সম্পাদনা] কিছুটা বেশি পরীক্ষার মাধ্যমে আমি ঠিক বুঝতে পেরেছি যে এটি IE8 এর ব্যাকগ্রাউন্ড চিত্রগুলির সাথে কাজ করে না। একটি পৃষ্ঠা লোড করে জিআইএফ অ্যানিমেশন ওয়াইল রেন্ডার করতে আইই 8 পাওয়ার জন্য আমি যা ভাবতে পারি তার সবই আমি চেষ্টা করে দেখছি, তবে এই মুহুর্তে এটি সম্ভব বলে মনে হচ্ছে না।
$(spinner).css('background-image')
) ব্যবহার করে সিএসএস কোডটি কেন পড়ছেন , তবে এটি একইভাবে সেট করার পরিবর্তে আপনি খাঁটি জাভাস্ক্রিপ্ট পদ্ধতি ব্যবহার করছেন ( spinner.style.backgroundImage
)। আপনার কোডটি কোনও ব্রাউজারে আমার জন্য কাজ করছে না। আমি যদি সরাসরি আপনার কোড ব্যবহার করি তবে আমি cannot set backgroundImage property of undefined
ত্রুটি পাচ্ছি । আমি যদি আপনার কোডটি jQuery ব্যবহার করে CSS সেট করতে পরিবর্তন করি তবে কোডটি কোনও ত্রুটি ছাড়াই চলে তবে চিত্রটি পুনরায় সেট করা হয় না এবং ডিভ / স্পিনার উপাদানটি খালি থাকে। আমি জানি না, কেন?
background-image
unload
beforeunload
@ উদ্যানফোকসের জবাবের ভিত্তিতে এটি আইই 8 এবং এএসপি.নেট এমভিসি 3 এ আমার জন্য কাজ করেছে।
আমাদের _ লেআউট
<body style="min-width: 800px">
<div id="progress">
<div style="min-height: 200px">
</div>
<div id="throbber">
<img src="..\..\Content\ajax-loader.gif" alt="Progress" style="display: block;
margin-left: auto; margin-right: auto" />
</div>
</div>
<div id="main">
<<< সামগ্রী এখানে >>> ...
<script type="text/javascript" language="javascript">
function ShowThrobber() {
$('#main').hide();
$('#progress').show();
// Work around IE bug which freezes gifs
if (navigator.appName == 'Microsoft Internet Explorer') {
// Work around IE bug which freezes gifs
$("#throbber").html('<img src="../../Content/ajax-loader.gif" alt="Progress" style="display: block; margin-left: auto; margin-right: auto"/>');
}
</script>
<script type="text/javascript" language="javascript">
function HideThrobber() {
$('#main').show();
$('#progress').hide();
}
</script>
<script type="text/javascript" language="javascript">
$(document).ready(function () {
HideThrobber();
});
</script>
এবং আমাদের নেভিগেশন লিঙ্কগুলিতে:
<input type="submit" value="Finish" class="submit-link" onclick="ShowThrobber()"/>
অথবা
@Html.ActionLink("DoSometthing", "MyController", new { Model.SomeProperty }, new { onclick = "ShowThrobber()" })
Http://timexwebdev.blogspot.com/2009/11/html-postback-freezes-animated-gifs.html এ এই সমাধানটি পেয়েছে এবং এটি কাজ করে! চিত্রটি দৃশ্যমান হওয়ার আগে কেবল পুনরায় লোড করুন। আপনার বোতামের অন্লিক থেকে নিম্নলিখিত জাভাস্ক্রিপ্ট ফাংশনটি কল করুন:
function showLoader()
{
//*** Reload the image for IE ***
document.getElementById('loader').src='./images/loader.gif';
//*** Let's make the image visible ***
document.getElementById('loader').style.visibility = 'visible';
}
আমি বুঝতে পারি যে এটি একটি পুরানো প্রশ্ন এবং এখন অবধি মূল পোস্টারগুলির মধ্যে প্রতিটিই তাদের জন্য কাজ করে এমন একটি সমাধান খুঁজে পেয়েছে তবে আমি এই সমস্যাটি দেখেছি এবং ভিএমএল ট্যাগগুলি এই আইআই বাগের শিকার না হয় victim আইএম ব্রাউজারে ভিএমএল ট্যাগ ব্যবহার করে যখন পৃষ্ঠা আনলোড চলাকালীন অ্যানিমেটেড জিআইএফগুলি এখনও সরে যায়।
লক্ষ্য করুন আমি ভিএমএল ট্যাগগুলি ব্যবহারের সিদ্ধান্ত নেওয়ার আগে ভিএমএলকে প্রথম সনাক্ত করেছি যাতে এটি ফায়ারফক্স এবং অন্যান্য ব্রাউজারগুলিতে স্বাভাবিক অ্যানিমেটেড জিআইএফ আচরণ ব্যবহার করে কাজ করে।
আমি কীভাবে এটি সমাধান করেছি তা এখানে।
<input class="myExitButton" type="button" value="Click me" />
<div class="loadingNextPage" style="display:none" >
<span style="left:-24px; POSITION: relative; WIDTH: 48px; DISPLAY: inline-block; HEIGHT: 48px" class="spinnerImageVml"><?xml:namespace prefix="rvml" ns = "urn:schemas-microsoft-com:vml" /><rvml:group style="POSITION: absolute; WIDTH: 48px; HEIGHT: 48px; rotation: 1deg" class="rvml" coordsize = "47,47"><rvml:image style="POSITION: absolute; WIDTH: 48px; HEIGHT: 48px; TOP: 0px; LEFT: 0px" class="rvml" src="/images/loading_gray.gif" coordsize="21600,21600"></rvml:image></rvml:group></span>
<img class="spinnerImage" src="/images/loading_gray.gif" alt="loading..." />
<div>Just one moment while we access this information...</div>
</div>
<script language="javascript" type="text/javascript">
window.LoadProgress = (function (progress, $) {
var getdialogHeight = function (height) {
var isIE = navigator.userAgent.toLowerCase().indexOf('msie') > -1;
if (isIE) {
return height + 'px';
}
return height;
};
var isVmlSupported = function () {
var a = document.body.appendChild(document.createElement('div'));
a.innerHTML = '<v:shape id="vml_flag1" adj="1" />';
var b = a.firstChild;
b.style.behavior = "url(#default#VML)";
var supported = b ? typeof b.adj == "object" : true;
a.parentNode.removeChild(a);
return supported;
};
var showAnimationDuringPageUnload = function () {
if (isVmlSupported()) {
$(".loadingNextPage > .spinnerImage").hide();
}
else {
$(".loadingNextPage > .spinnerImageVml").hide();
}
};
var openLoadingMessage = function () {
$(".loadingNextPage").dialog({
modal: true,
closeOnEscape: true,
title: 'Please wait...',
closeText: 'x',
height: getdialogHeight(200),
buttons: {
"Close": function () {
$(this).dialog("close");
}
}
});
};
$('.myExitButton').click(function () {
openLoadingMessage();
showAnimationDuringPageUnload();
window.location.href = 'http://www.stackoverflow.com';
});
return progress;
})(window.LoadProgress || {}, window.jQuery);
</script>
স্বাভাবিকভাবেই, এটি jQuery, jQueryUI এর উপর নির্ভর করে এবং কিছু প্রকারের ("/images/loading_gray.gif") এর একটি অ্যানিমেটেড জিআইএফ প্রয়োজন।
ঠিক একটি অনুরূপ সমস্যা ছিল। এগুলি আমার পক্ষে নিখুঁতভাবে কাজ করেছে।
$('#myElement').prepend('<img src="/path/to/img.gif" alt="My Gif" title="Loading" />');
$('<img src="/path/to/img.gif" alt="My Gif" title="Loading" />').prependTo('#myElement');
আর একটি ধারণা ছিল jQuery এর। লোড () ব্যবহার করা; লোড করুন এবং তারপরে চিত্রটি সংশোধন করুন।
IE 7+ এ কাজ করে
খুব সহজ উপায় হল jQuery এবং সিম্পিমোডাল প্লাগইন ব্যবহার করা । তারপরে যখন আমাকে জমা দেওয়ার সময় আমার "লোডিং" জিআইএফ দেখানোর দরকার হয়, তখন আমি তা করি:
$('*').css('cursor','wait');
$.modal("<table style='white-space: nowrap'><tr><td style='white-space: nowrap'><b>Please wait...</b></td><td><img alt='Please wait' src='loader.gif' /></td></tr></table>", {escClose:false} );
আমার একই সমস্যা ছিল, ফায়ারফক্সের মতো অন্যান্য wণদাতাদের কাছেও সাধারণ। পরিশেষে আমি আবিষ্কার করেছি যে গতিশীলভাবে ফর্মের ভিতরে অ্যানিমেটেড জিআইএফ দিয়ে একটি উপাদান তৈরি করুন প্রাণবন্ত হয়নি, তাই আমি নিম্নলিখিত ওয়ার্কআরুনডটি বিকাশ করেছি।
1) document.ready()
পৃষ্ঠায় পাওয়া প্রতিটি ফরমে position:relative
সম্পত্তি পাওয়া যায় এবং তারপরে প্রত্যেকটির সাথে একটি অদৃশ্য থাকে DIV.bg-overlay
।
২) এর পরে, ধরে নিলাম যে আমার ওয়েবসাইটের প্রতিটি জমা মান btn-primary
সিএসএস ক্লাস দ্বারা চিহ্নিত করা হয়েছে , আবার document.ready()
আমি এই বোতামগুলির সন্ধান করি, প্রত্যেকের ফরমে প্যারেন্টের কাছে showOverlayOnFormExecution(this,true);
চলে যাই, এবং ফর্ম জমা দেওয়ার পরে আমি ক্লিক করা বোতাম পেরিয়ে ফাংশন ফায়ার করি and একটি বুলিয়ান যা এর দৃশ্যমানতা টগল করে DIV.bg-overlay
।
$(document).ready(function() {
//Append LOADING image to all forms
$('form').css('position','relative').append('<div class="bg-overlay" style="display:none;"><img src="/images/loading.gif"></div>');
//At form submit, fires a specific function
$('form .btn-primary').closest('form').submit(function (e) {
showOverlayOnFormExecution(this,true);
});
});
সিএসএসের জন্য DIV.bg-overlay
নিম্নলিখিত:
.bg-overlay
{
width:100%;
height:100%;
position:absolute;
top:0;
left:0;
background:rgba(255,255,255,0.6);
z-index:100;
}
.bg-overlay img
{
position:absolute;
left:50%;
top:50%;
margin-left:-40px; //my loading images is 80x80 px. This is done to center it horizontally and vertically.
margin-top:-40px;
max-width:auto;
max-height:80px;
}
3) যে কোনও ফর্ম জমা দেওয়ার সময়, নীচের ফাংশনটি পুরো জুড়ে একটি আধা-সাদা ব্যাকগ্রাউন্ড ওভারলে দেখায় (যা ফর্মের সাথে আবার ইন্টারঅ্যাক্ট করার ক্ষমতা অস্বীকার করে) এবং এর ভিতরে একটি অ্যানিমেটেড জিআইএফ (যা দৃশ্যত কোনও লোডিং ক্রিয়া দেখায়) দেখায় fired
function showOverlayOnFormExecution(clicked_button, showOrNot)
{
if(showOrNot == 1)
{
//Add "content" of #bg-overlay_container (copying it) to the confrm that contains clicked button
$(clicked_button).closest('form').find('.bg-overlay').show();
}
else
$('form .bg-overlay').hide();
}
এই ইভেন্টে এটি সংযোজনের পরিবর্তে ফর্মটিতে অ্যানিমেটেড জিএফ দেখানো, বিভিন্ন ব্রাউজারের "জিআইএফ অ্যানিমেশন ফ্রিজ" সমস্যা সমাধান করে (যেমন বলা হয়েছে, আমি এই সমস্যাটি আইএম এবং ফায়ারফক্সে পেয়েছি, ক্রোমে নয়)