- verlag
- veranstaltungen
- shop
- abo
- genossenschaft
- taz zahl ich
- taz
taz_akt_69524860455 CANNES dpa ■ Die neue Internet-Tauschbörse Qtrax verspricht Musikfans Millionen von Songs zum Gratis-Herunterladen – und das mit dem Segen der Plattenfirmen. Der Dienst finanziert sich komplett über Werbung auf seiner Website www.qtrax.com, erklärte Vorstandchef Allan Klepfisz gestern auf der Musikmesse Midem. Die Tauschbörse startet heute in Deutschland, Nordamerika und sechs anderen europäischen Ländern. Jeder registrierte Nutzer kann sämtliche Musik von seinem Computer runterladen, nachdem Qtrax die Dateien geprüft hat.
').append($(xhr.responseText));}if( this.loadable.opt.on.receipt instanceof Function ){this.loadable.opt.on.receipt( data, status, xhr );}this.loadable.mount( data );}}; // proto.on// === AsyncLoadable prototype(function(){var proto = AsyncLoadable.prototype = new Object;proto.submitAsync = function(){if( this.flying ) return false; this.flying =true;if( this.isForm ) {if( sentForm ) return false;sentForm = this;}// collect form datavar post = this.jQ.serialize();// deactivate (form?) during transferthis.jQ.attr({ debug:'001' });this.block();// mark request as xhr, then flatten url to dump complexitythis.url.setParams({ xhr:true });//this.url +='';// send data, normalize and deligate responsevar on = this.on;$.ajax({type: this.isForm ? 'POST' : 'GET',url: ''+ this.url,cache: false,data: post,dataType: 'html', // 'xml',xhrFields: { withCredentials: true // ! JQ3Mig --> request with cookies },// have response preparsed to DOMbeforeSend: function( xhr, settings ){xhr.responseType = 'document';},// data was acceptedsuccess: function( data, status, xhr ){on[200]( $(data), status, xhr );},// apparent errorerror: function( xhr, status, message ){//console.log('status: '+ status +' :: '+ message );//console.log( xhr );var data = $( xhr.response );// normalize payload to DOM fragmentif( !data.length ) {// data is not documentvar text;try {text = xhr.responseText;if( text ) text = text.replace(/http:/g, "");//console.log('response text: '+ text );data = $('
').html( text );}catch(e) {//console.log('error reading responseText: '+ e );}}if( !data.length ) {try {//console.log( xhr.response.head.parentElement.outerHTML );}catch(e) {//console.log('error reading response.head: '+ e );}}// deligate handling according to response status code// * IE9 will end up here w/ code 200on[ xhr.status && on[ xhr.status ]? xhr.status : 0]( data, status, xhr, message );},// finalize transfercomplete: function( xhr, status ){//sentForm = false;}}); //ajax}; //proto.submitAsync// make myself garbageproto.remove = function(){var registerID = this.domEl.filOtaz_de_asynchLoadable;this.jQ.remove();// unregisterallAsyncLoadables[ registerID ] = null;//console.log( '-'+ allAsyncLoadables );//DEBUG};// mount new subtree from response payload replacing originalproto.mount = function( data ){// show replacement(s) from response bodyvar opt = this.opt;//alert( data[0].documentElement.outerHTML );/*// find my package in payload//var pkg = data.find('fragment#'+ opt.fragmentID );var pkg = data.find( opt.package || 'body' );if(! pkg.length ) pkg = data.find('body');*/var pkg = ( data[0] instanceof HTMLDivElement )? data : data.find('body');if(! pkg.length ) pkg = $( data[0].documentElement );if(! pkg.length ) alert('this should not happen ', data[0] );// take from package …var pick = pkg.find( opt.pick );//|| 'form');/*if( !pick.length ) {//alert('server response fails expectations: respective content not found.');this.unblock();return false;}*/var me = this;var replace = [ { treatee: me.jQ, pick: pick, ajaxify: true } ];if( opt.replace instanceof Array ) replace = replace.concat( opt.replace );$.each( replace, function(i,r){var i = i, old = $( r.treatee ), nju = $( r.pick, data );if( !old.length ) return;var isPrimary = i ==0;// or old == me.jQif( !nju.length && !r.remove ) {if( isPrimary ) {me.unblock();me.flying =false;// seem to loose submit handler here?if( me.isForm ) sentForm = false; }return;}//var o = $.extend({ a_DEBUG:true }, r, opt );// first winsvar anchor = $('').hide().insertBefore( old );var id = old.attr('id');if( id ) ( nju.length ? nju : anchor ).not('script').attr({ id: id });old.slideUp( function(){ old.remove();if( isPrimary ) {me.remove();if( me.isForm ) sentForm = false;}});var last = anchor;nju.each( function(i,e){var jQ = $(e);var scripts = false; // Script tags are not ignored anymore on DOM manipulationif(jQ.is('script')) { // Following animation stuff will set script tags style to 'display: block'$('body').append(jQ);return;}if(0 < jQ.find('script').length) { // original position of script tags might break stylesheet (e. g. :last-child)scripts = jQ.find('script');jQ.find('script').remove();}//jQ.find('script').remove(); // don't import any scriptsvar next = { isForm :false };if( typeof r.ajaxify =='undefined' || r.ajaxify ===true ) {next = new AsyncLoadable( jQ, opt );jQ = next.jQ;}else if(!( r.ajaxify instanceof Array )) r.ajaxify = [ r.ajaxify ];if( r.ajaxify instanceof Array ) $.each( r.ajaxify, function(i,ax){var o = $.extend({ fallback: [ r, opt ] }, ax );new AsyncLoadable( jQ.find( fallback(o).treatee ), o );});/* TODO new AsyncLoadable(…) extrahiert Fehler und zeigt sie modal an. Dabei wird das Form kopiert und nach Bestätigung wieder eingestzt. Mitgeliefertes JS ist hier aber noch nicht gelaufen, geschieht erst beim einsetzen in den DOM … */jQ.hide().removeClass('first last even odd').insertAfter( last ); // add this new el… <--hier(function(){// set positional classes according where we are mountedvar prev = jQ.prevAll(':visible');var next = jQ.nextAll(':visible');var pos = ''; // prev %2 ? 'even' : 'odd';// bad result in Archiv w/ two forms mounted from one sourceif( prev.length ==0 ) pos +=' first';if( next.length ==0 ) pos +=' last';jQ.addClass( pos );next.removeClass('even odd');// … so remove uncertain positional attributes})();if(false !== scripts) {$('body').append(scripts);}jQ.trigger('TAZdomChange');last = jQ; anchor.remove();//mountedForms = mountedForms.add( jQ );jQ.slideDown( function(){jQ.trigger('TAZboxChange');( me.opt.on.mounted instanceof Function ) && me.opt.on.mounted( jQ );});// friendly focusif( next.isForm ) {var ctrls = next.jQ.find(':input:visible');if( opt.tabindex >0 )ctrls.attr('tabindex', opt.tabindex );if( opt.focus >0 )ctrls.first().focus();}});}); //each replace}; //mount// demand reload of page w/ https before allowing access to formproto.demandPageReload = function() {this.showMessage( '', {block: true,onConfirm : function(){location.protocol ='https';return false;},html: '
Um Formular-Inhalte gesichert übertragen zu können, muß bereits '+'diese Seite per HTTPS geladen werden, da Ihr Browser neuere Technologie'+' nicht unterstützt.
'+'
Vielleicht sollten Sie einen moderneren Browser'+' verwenden.
',hint: 'mit https neu laden'} );};proto.showMessage = function( message, opt ) {var opt = ensureObjType( opt, Object );if( opt.block ) this.block();var form = this;var me = $('
').on ('submit', function(){var blockOn = opt.onConfirm instanceof Function && opt.onConfirm() ==false;me.slideUp(function(){ form.jQ = form.jQ.not( me );me.remove();});if( !blockOn ) form.unblock( opt.replacement );return false;}).html(( opt.title ?('
') :'' )+'
'+( message ?('
'+ message +'
' ) :'')+( opt.html || '' )+''+'
').hide().insertAfter( this.jQ );if( opt.slide ) me.slideDown( function(){me.trigger('TAZboxChange');}); else me.show();form.jQ = form.jQ.add( me );};proto.block = function() {var form = this.jQ;this.restore = form.clone(true);form.submit( function(){return false;} );form.find('.sectbody').css({ opacity: 0.3 });form.find('input, textarea').attr({ disabled : true });form.find('input:submit').fadeOut();return this.restore;};proto.unblock = function( replacement ) {var replacement = replacement || this.restore; if( !replacement ) return false;this.replaceForm( replacement );this.restore =null;};proto.replaceForm = function( replace ) {var form = this.jQ;var replace = $( replace );replace.hide().insertAfter( form.last() ).slideDown( function(){replace.trigger('TAZboxChange');});form.slideUp(function(){ form.remove(); });this.jQ = replace; this.domEl = replace[0];//added by mar to prevent css breaking after form replacethis.jQ.find('>.sectbody, >fieldset>.sectbody, >.rack>fieldset>.sectbody').addClass('jsForm');};})(); //AsyncLoadable.prototype// === private "class" functionsvar ensureObjType = function( obj, Type ){var obj = obj, Type = Type;( typeof Type =='undefined' ) &&( Type = Object );if( typeof obj =='undefined' ) obj = new Type;else if(!( obj instanceof Type )) {alert('filOtaz_de.ajaxify:ensureObjType cries: '+ obj +' is not of demanded type '+ (new Type) +'.');return undefined;}return obj;};})();//
Wollen Sie taz-Texte im Netz veröffentlichen oder nachdrucken? Wenden Sie sich bitte an die Abteilung Syndikation: lizenzen@taz.de.