这是我的jQuery:
$("object").each(function(){
video_url = $(this).find('embed').attr('src');
new_video_url = video_url+"&autohide=1&modestbranding=1&showinfo=0&theme=light";
$(this).find('embed').attr('src', new_video_url);
$(this).find('param:eq(0)').val(new_video_url);
$(this).find('embed').before('<param name="autoplay" value="1"><param name="showinfo" value="1"><param name="modestbranding" value="1"><param name="hd" value="1"><param name="color" value="white"><param name="autohide" value="1">');
});
以下是jQuery之前的代码:
<object width="500" height="371">
<param name="movie" value="http://www.youtube.com/v/ISeQBRUa8xQ&rel=0&egm=0&showinfo=0&fs=1">
<param name="wmode" value="transparent">
<param name="allowFullScreen" value="true">
<embed
src="http://www.youtube.com/v/ISeQBRUa8xQ&rel=0&egm=0&showinfo=0&fs=1"
type="application/x-shockwave-flash"
width="500"
height="371"
allowfullscreen="true"
mode="transparent"
>
</object>
这是jquery执行后的样子。
<object width="500" height="371">
<param name="movie" value="http://www.youtube.com/v/ISeQBRUa8xQ&rel=0&egm=0&showinfo=0&fs=1&autohide=1&modestbranding=1&showinfo=0&theme=light">
<param name="wmode" value="transparent">
<param name="allowFullScreen" value="true">
<param name="autoplay" value="1">
<param name="showinfo" value="1">
<param name="modestbranding" value="1">
<param name="hd" value="1">
<param name="color" value="white">
<param name="autohide" value="1">
<embed
src="http://www.youtube.com/v/ISeQBRUa8xQ&rel=0&egm=0&showinfo=0&fs=1&autohide=1&modestbranding=1&showinfo=0&theme=light"
type="application/x-shockwave-flash"
width="500"
height="371"
allowfullscreen="true"
wmode="transparent"
>
</object>
即使HTML代码已成功更改,页面的呈现也不会显示更新的代码。
这是一个证明问题的jsFiddle:http://jsfiddle.net/4kQYy/4/
如果您在检查器中检查第二个YouTube视频,您会发现它实际上是100%正确地注入了代码,但页面呈现并未反映更新。怎么可能?当然,您在源代码中看到的是您在屏幕上看到的内容?救命啊!
答案 0 :(得分:2)
我不是闪存专家,但我的逻辑说,你要做的事情是行不通的。在我看来,会发生以下步骤:
你可以做的是将整个flash实例化过程移动到javascript。这意味着您生成整个对象标记。或者,您分离对象标记,进行自定义并再次重新插入。我更新了fiddle
中的代码$("#foobar").each(function(){
var parent = $(this).parent(),
object = $(this).detach()
video_url = object.find('embed').attr('src');
new_video_url = video_url+"&autohide=1&modestbranding=1&showinfo=0&theme=light";
object.find('embed').attr('src', new_video_url);
object.find('param:eq(0)').val(new_video_url);
object.find('embed').before('<param name="autoplay" value="1"><param name="showinfo" value="1"><param name="modestbranding" value="1"><param name="hd" value="1"><param name="color" value="white"><param name="autohide" value="1">');
parent.append(object);
});
我知道这并不适用于所有情况,特别是如果父母有多个孩子,但它应该给你一个大概。