Javascript TypeScript:IFrame沙盒属性未定义,DOMSettableTokenList没有构造函数
我正在类型脚本中创建iFrame元素:Javascript TypeScript:IFrame沙盒属性未定义,DOMSettableTokenList没有构造函数,javascript,iframe,typescript,sandbox,Javascript,Iframe,Typescript,Sandbox,我正在类型脚本中创建iFrame元素: var iFrameElement : HTMLIFrameElement = document.createElement("iframe"); iFrameElement.sandbox.add('allow-forms'); iFrameElement.sandbox.add('allow-scripts'); iFrameElement.sandbox.add('allow-same-origin'); 但是,沙盒属性未定义,因此此处的add(
var iFrameElement : HTMLIFrameElement = document.createElement("iframe");
iFrameElement.sandbox.add('allow-forms');
iFrameElement.sandbox.add('allow-scripts');
iFrameElement.sandbox.add('allow-same-origin');
但是,沙盒属性未定义,因此此处的add(value:string)失败
我也不知道如何实例化沙盒属性,下面是lib.d.ts中定义的接口:
interface HTMLIFrameElement {
sandbox: DOMSettableTokenList;
}
interface DOMSettableTokenList extends DOMTokenList {
value: string;
}
interface DOMTokenList {
length: number;
contains(token: string): boolean;
remove(token: string): void;
toggle(token: string): boolean;
add(token: string): void;
item(index: number): string;
[index: number]: string;
toString(): string;
}
我在想,这里有一些语法我不知道如何使用,或者有一些其他技巧可以让它工作。我在这个网站和整个互联网上进行了广泛的搜索,但是结果并没有特别有用
不幸的是,答案在TypeScript中不起作用(类型“String”缺少类型“DOMSettableTokenList”中的属性“value”),这使我想将某些对象强制转换为该类型。我看到似乎已经重新实现了该类型,但现在对我来说这似乎太粗糙了
帮助我stackoverflow,你是我唯一的希望。一般来说,如果你想了解一些特定于浏览器的实现,我建议你将(更改类型)转换为
任意
,这样你甚至可以编写:
(<any>iFrameElement).foo = "";
对于Chrome来说:
(<any>iFrameElement).sandbox = "allow-forms allow-scripts";
(iframelement).sandbox=“允许表单允许脚本”;
结果表明,在FireFox和IE11中,sandbox
是一个DOMSettableTokenList
并且您发布的代码应该可以工作(sandbox
有一个add()
方法)。但在Chrome中(这可能就是您正在使用的),sandbox
是一个字符串。接口声明没有考虑到这一点。您可能希望尝试将接口更改为sandbox:any代码>如果此属性因浏览器而异
(<any>iFrameElement).sandbox = "allow-forms allow-scripts";