javascript - IE8中无法获取对象属性

标签 javascript jquery internet-explorer youtube

我有以下我无法解决的问题。 我的 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&amp;hl=en&amp;fs=1&amp;rel=0"><PARAM NAME="Src" VALUE="http://www.youtube.com/v/TDlqMuGqTyE?fs=1&amp;hl=en&amp;fs=1&amp;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&amp;hl=en&amp;fs=1&amp;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&amp;hl=en&amp;fs=1&amp;rel=0" /><embed type="application/x-shockwave-flash" width="320" height="267" src="http://www.youtube.com/v/TDlqMuGqTyE?fs=1&amp;hl=en&amp;fs=1&amp;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/

相关文章:

jquery - 背景上的图像坚持全屏 - 按钮坚持左侧

javascript - 当前位置路径作为 url 参数

python - 不一致的页面在 Internet Explorer 中显示过期消息

javascript - 显示我的 json 结果,但它只从数据库返回 1 个结果

javascript - POST 请求完成后的 GET 请求

javascript - 延迟加载 vue-i18n 中 `en.js` 或 `ja.js` 的格式是什么

javascript - 使用正则表达式区分输入中的数字和单词

javascript - 在jquery Load函数中传递动态id值

css - "Text - Empty Text Node"的IE7原因

javascript - 输入类型 ="number"和 IE10+