简而言之,我想在Firefox中播放一个blob MP3文件.
我可以访问blob本身:( blob用mime类型切片audio/mpeg3),以及它的URL : blobURL = window.URL.createObjectURL(blob).
我尝试过:
一个HTML5音频播放器:
<audio controls="controls">
<source src="[blobURL]" type="audio/mp3">
</audio>
Run Code Online (Sandbox Code Playgroud)
但我在Firebug中收到警告,告诉我Firefox无法读取类型的文件audio/mpeg3.
多个音频播放器库(SoundManager,JPlayer等),但似乎都没有允许blob URL作为输入.
我做错了吗?或者有没有人知道可以从blob播放MP3文件的变通方法或库?
以下代码行导致IE中出现"JScript对象预期"错误:
hideElements.apply(window, elements);
Run Code Online (Sandbox Code Playgroud)
根据IE,'预期的JScript对象'是指hideElements,它是一个将任意数量的HTML对象作为参数并隐藏它们的函数.
具体来说,我通过调用来检索HTML对象的数组getElementsByTagName,并且我希望将此数组作为函数的参数列表传递hideElements.apply()在这种情况下,JS函数正是我所需要的.我知道我肯定会以不同的方式编写我的代码,但由于这在Firefox和Chrome上完美运行,并且在技术上是正确的,我真的很想知道为什么IE卡在那里.
我确定,当执行该行时:
window不是null和类型Window;elements不是null和类型HTMLCollection; 和hideElements 是一个功能齐全的JS函数(它可以完全独立运行,并且在执行上面的代码时完全加载).作为Objective-C初学者,我对init函数以及如何以及何时覆盖它非常困惑.所以这里有几个问题:
请注意我知道语法:
if ((self = [super init]))
{
_foo = [[Bar alloc] init];
}
return self;
Run Code Online (Sandbox Code Playgroud) 下面是一个用 Angular 编写的下拉菜单示例,其中我使用 HTML5hidden属性(换句话说,display: none;)来显示/隐藏项目列表:
<button
id="my-btn
type="button"
aria-haspopup="menu"
aria-controls="my-menu"
[attr.aria-expanded]="isMenuOpen"
(click)="isMenuOpen = !isMenuOpen"
>
Menu
</button>
<ul
id="my-menu"
role="menu"
aria-labelledby="my-btn"
[hidden]="!isMenuOpen"
>
...
</ul>
Run Code Online (Sandbox Code Playgroud)
在下一个示例中,我使用结构指令*ngIf而不是属性hidden来有条件地呈现列表。换句话说,现在每次isMenuOpen更改时,列表都会从 DOM 中添加和删除。
<ul
id="my-menu"
role="menu"
aria-labelledby="my-btn"
*ngIf="isMenuOpen"
>
...
</ul>
Run Code Online (Sandbox Code Playgroud)
忽略任何框架或性能问题,这两种实现从可访问性的角度来看有什么不同吗?
相当多的 ARIA 属性通过引用其他元素的 ID(例如aria-controls、aria-labelledby等)来工作。从 DOM 中删除由这样的属性引用的元素是否比隐藏该元素更难访问?
javascript ×2
blob ×1
dom ×1
firefox ×1
flash ×1
html5 ×1
iphone ×1
mp3 ×1
objective-c ×1
xcode ×1