Срещам странен проблем, използвайки функцията append и appendTo на jQuery. Преминавам през обект и създавам елементи въз основа на свойствата на обектите. На няколко места в моята функция използвам методите .append() и .appendTo() напълно добре. В IE8 и IE7 обаче получавам странна грешка. Грешката изчезва, когато коментирам реда: o.append(em)
Някакви идеи?
embedWindowsMedia: function(url, destination, opt){
// Default MediaPlayer options:
var d = {
id: 'mediaPlayer',
width: '320',
height: '285',
classid:'CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95',
codebase: 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
standby: 'Loading Microsoft Windows Media Player components...',
type: 'application/x-oleobject',
params: { fileName : '',
animationatStart : 'true',
transparentatStart : 'true',
autoStart : 'false',
showControls : 'false',
loop : 'true',
windowlessVideo: 'true'
},
embed: {
type: 'application/x-mplayer2',
pluginspage: 'http://microsoft.com/windows/mediaplayer/en/download/',
id: 'mediaPlayer',
name: 'mediaPlayer',
displaysize: '4',
autosize:'-1',
bgcolor:'darkblue',
showdisplay: '0',
showstatusbar:'-1',
videoborder3d:'-1',
width: '320',
height: '285',
src: '',
autostart:'',
loop :'false'
}
};
// Handle overwriting default options:
if (!url)
return false;
else{
d.params.fileName = url;
d.embed.src = url;
}
alert("urls set");
if (opt.embed){
d.embed = $.extend(d.embed, opt.embed)
delete opt.embed;
}
if (opt.params){
d.params = $.extend(d.params, opt.params)
delete opt.params;
}
var n = $.extend(d,opt);
// Create object with options and all:
var o = $("<object/>");
for (var k in n){
if (typeof n[k] == 'string'){
o.attr(k,n[k]);
}
else if(typeof n[k] == 'object'){
if (k=='params'){
for( var p in n[k]){
var param = $('<param/>');
param.attr('name', p).attr('value', n[k][p]).appendTo(o);
}
}
else if (k=='embed'){
var em = $('<embed/>');
for( var e in n[k]){
em.attr(e, n[k][e]);
}
o.append(em);
}
}
}
// Insert object into container:
if(destination)
o.appendTo(destination);
}
Получаване на същата точна грешка и със следния код:
embedWindowsMedia: function(url, destination, opt){
// Default MediaPlayer options:
var d = {
id: 'mediaPlayer',
width: '320',
height: '285',
classid:'CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95',
codebase: 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
standby: 'Loading Microsoft Windows Media Player components...',
type: 'application/x-oleobject',
params: { fileName : '',
animationatStart : 'true',
transparentatStart : 'true',
autoStart : 'false',
showControls : 'false',
loop : 'true',
windowlessVideo: 'true'
},
embed: {
type: 'application/x-mplayer2',
pluginspage: 'http://microsoft.com/windows/mediaplayer/en/download/',
id: 'mediaPlayer',
name: 'mediaPlayer',
displaysize: '4',
autosize:'-1',
bgcolor:'darkblue',
showdisplay: '0',
showstatusbar:'-1',
videoborder3d:'-1',
width: '320',
height: '285',
src: '',
autostart:'',
loop :'false'
}
};
// Handle overwriting default options:
if (!url)
return false;
else{
d.params.fileName = url;
d.embed.src = url;
}
alert("urls set");
if (opt.embed){
d.embed = $.extend(d.embed, opt.embed)
delete opt.embed;
}
if (opt.params){
d.params = $.extend(d.params, opt.params)
delete opt.params;
}
var n = $.extend(d,opt);
// Create object with options and all:
var o = $("<object/>").appendTo(destination);
for (var k in n){
if (typeof n[k] == 'string'){
o.attr(k,n[k]);
}
else if(typeof n[k] == 'object'){
if (k=='params'){
for( var p in n[k]){
var param = $('<param/>');
param.attr('name', p).attr('value', n[k][p]).appendTo(o);
}
}
else if (k=='embed'){
//var em = $('<embed/>');
var em = "<embed ";
for( var e in n[k]){
em += e+'="'+n[k][e]+'" ';
//em.attr(e, n[k][e]);
}
em+= "></embed>";
//$("#mediaPlayer").append(em);
}
}
}
console.log(em);
$("#mediaPlayer").html(em);
}
Тук възниква грешка в jquery (this.appendChild(elem);)
append: function() {
return this.domManip(arguments, true, function( elem ) {
if ( this.nodeType === 1 ) {
this.appendChild( elem );
}
});
},
var em = $('<embed/>')
сvar em = $('<embed></embed>');
? - person arviman   schedule 29.07.2011em.appendTo(o);
прави всичко по-добро - person Paul   schedule 29.07.2011