我有以下我无法解决的问题。 我的 WP 博客主页包含一些 YouTube 视频。 我的任务是从页面上的 youtube 对象获取所有 youtube URL。
所以我做了这样的事情:
jQuery("object").each(function() {
$ytbURL = jQuery(this).find("embed").attr("src");
$ytbID = $ytbURL.match(...); //here I got error from IE8 that ytbURLis null or not and object
});
在 FF 上它可以完美地工作。
15/12 更新: 以下是代码示例。
IE8 - 开发者工具:
<OBJECT codeBase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" classid=clsid:d27cdb6e-ae6d-11cf-96b8-444553540000 width=320 height=267><PARAM NAME="_cx" VALUE="8466"><PARAM NAME="_cy" VALUE="7064"><PARAM NAME="FlashVars" VALUE=""><PARAM NAME="Movie" VALUE="http://www.youtube.com/v/TDlqMuGqTyE?fs=1&hl=en&fs=1&rel=0"><PARAM NAME="Src" VALUE="http://www.youtube.com/v/TDlqMuGqTyE?fs=1&hl=en&fs=1&rel=0"><PARAM NAME="WMode" VALUE="Transparent"><PARAM NAME="Play" VALUE="0"><PARAM NAME="Loop" VALUE="-1"><PARAM NAME="Quality" VALUE="High"><PARAM NAME="SAlign" VALUE="LT"><PARAM NAME="Menu" VALUE="-1"><PARAM NAME="Base" VALUE=""><PARAM NAME="AllowScriptAccess" VALUE=""><PARAM NAME="Scale" VALUE="NoScale"><PARAM NAME="DeviceFont" VALUE="0"><PARAM NAME="EmbedMovie" VALUE="0"><PARAM NAME="BGColor" VALUE=""><PARAM NAME="SWRemote" VALUE=""><PARAM NAME="MovieData" VALUE=""><PARAM NAME="SeamlessTabbing" VALUE="1"><PARAM NAME="Profile" VALUE="0"><PARAM NAME="ProfileAddress" VALUE=""><PARAM NAME="ProfilePort" VALUE="0"><PARAM NAME="AllowNetworking" VALUE="all"><PARAM NAME="AllowFullScreen" VALUE="true">
<embed type="application/x-shockwave-flash" width="320" height="267" src="http://www.youtube.com/v/TDlqMuGqTyE?fs=1&hl=en&fs=1&rel=0" allowfullscreen="true" wmode="transparent"></embed></OBJECT>
Wordpress:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="320" height="267" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="transparent" /><param name="allowfullscreen" value="true" /><param name="src" value="http://www.youtube.com/v/TDlqMuGqTyE?fs=1&hl=en&fs=1&rel=0" /><embed type="application/x-shockwave-flash" width="320" height="267" src="http://www.youtube.com/v/TDlqMuGqTyE?fs=1&hl=en&fs=1&rel=0" allowfullscreen="true" wmode="transparent"></embed></object>
看起来 IE8 对源 HTML 做了一些更改,或者可能是开发人员工具显示它的方式?
谢谢
山姆
最佳答案
我会尝试使用 jQuery 的很棒的 $
函数而不是 jQuery
,看看它是否有效:
$('object').each(function()
{
$ytbURL = $(this).find('embed').attr('src');
$ytbID = $ytbURL.match(...);
});
我怀疑会有什么不同,但它可能会起作用。哦,这是一个非常有用的 YouTube 视频 ID 抓取器正则表达式,以防万一您需要它:(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+
.
祝你好运!
<小时/>试试这个。另外,你能给我们一个 jQuery 解析 DOM 的例子吗?可能是因为有多个 <embed>
标签,所以jQuery(this).find('embed')
将返回一个数组,而不是单个对象。
jQuery('object').each(function()
{
$ytbURL = jQuery(this).children('embed:eq(0)').attr('src');
$ytbID = $ytbURL.match(...);
});
关于javascript - IE8中无法获取对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4428197/