jquery et frameset = impossible
salut :zoubi:
je veux resizer une frame avec animate.
Oui les frames sont deprecated merci on est au courant :) mais voilà par exemple, subsonic est développé comme ça et je ne crois pas que son créateur ait envie de tout revoir. Et on a pas tous le temps de forker des projets et de les reprendre à notre compte à chaque fois qu'on a envie d'apporter des petites modifications à un outil complexe et qui marche bien.
ce qu'il faut savoir c'est que jQuery n'agit que sur le CSS, donc animer l'attribut cols de la balise frameset est impossible avec jQuery.animate : http://api.jquery.com/animate/
resizer une frame avec un input ou un lien à l'intérieur est facile et ça marche bien :
Code:
1 2 3
| <input type="button" value="resize" onClick="javascript:parent.document.getElementById('parentFramesetID').cols='*,20';">
<a href="#" onclick="javascript:parent.document.getElementById('parentFramesetID').cols='*,20';">resize</a>
<input type="button" value="anim" onClick="javascript:$('#parentFramesetID', top.document).attr({'cols':'*,20'});"> |
au passage le mot clef "javascript:" est superflu mais je trouve ça plus propre.
par contre pour l'animate c'est plus complexe : il faut faire des fonctions dédiées.:cry:
Exemple moche et qui bouffe du CPU mais qui marche :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
<script type="text/javascript">
var x = 20;
var min = 20;
var max = 200;
var delay = 1;
var step = 20;
function enlargeFrameSet () {
x += step;
document.getElementById('middleframe').cols = '*,' + x;
if (x < max)
setTimeout('enlargeFrameSet()', delay);
}
function shrinkFrameSet () {
x -= step;
document.getElementById('middleframe').cols = '*,' + x;
if (x > min)
setTimeout('shrinkFrameSet()', delay);
}
$(function() {
$("#right")
.mouseover(function() {
enlargeFrameSet();
})
.mouseout(function() {
shrinkFrameSet();
});
});
</script>
<frameset id="middleframe" cols="*,20" border="1">
<frame id="main" name="main" src="main.html">
<frame id="right" name="right" src="right.html" scrolling="no">
</frameset> |
maintenant si quelqu'un a une solution pour le faire en jquery ou toute autre fonction qui permette un resize smooth et qui ne bouffe pas le CPU je suis preneur ! :ccool: