URLSearchParams 从 iframe 中返回空

Sha*_*oon 1 html javascript iframe

我的 iframe 是:

<iframe src="iframe.html?name=%1A%C3%A9%C2%AB%C2%A1%C2%A7O%C2%AE%C2%87nr%C3%9D" allowtransparency="allowtransparency" allowfullscreen="allowfullscreen" style="width: 100%; height: 100%; margin: 0; padding: 0; z-index: 9999; position: fixed; left: 0; top: 0; border: 0;"></iframe>
Run Code Online (Sandbox Code Playgroud)

从内部iframe.html,我正在做:

    let urlParams = new URLSearchParams(document.location.search)
    console.log(urlParams)
Run Code Online (Sandbox Code Playgroud)

但是,这总是返回 URLSearchParams {}__proto__: URLSearchParams

空的。

我究竟做错了什么?

And*_*rey 9

URLSearchParams 不是一个普通的对象,所以你需要使用方法来获取参数,例如

console.log(urlParams.get('name'));
Run Code Online (Sandbox Code Playgroud)

所有方法是:

此接口不继承任何方法。

URLSearchParams.append()
Run Code Online (Sandbox Code Playgroud)

附加指定的键/值对作为新的搜索参数。

URLSearchParams.delete()
Run Code Online (Sandbox Code Playgroud)

从所有搜索参数的列表中删除给定的搜索参数及其关联值。

URLSearchParams.entries()
Run Code Online (Sandbox Code Playgroud)

返回一个迭代器,允许迭代包含在此对象中的所有键/值对。

URLSearchParams.forEach()
Run Code Online (Sandbox Code Playgroud)

允许通过回调函数迭代此对象中包含的所有值。

URLSearchParams.get()
Run Code Online (Sandbox Code Playgroud)

返回与给定搜索参数关联的第一个值。

URLSearchParams.getAll()
Run Code Online (Sandbox Code Playgroud)

返回与给定搜索参数关联的所有值。

URLSearchParams.has()
Run Code Online (Sandbox Code Playgroud)

返回一个布尔值,指示是否存在这样的给定参数。

URLSearchParams.keys()
Run Code Online (Sandbox Code Playgroud)

返回一个迭代器,允许迭代包含在此对象中的键/值对的所有键。

URLSearchParams.set()
Run Code Online (Sandbox Code Playgroud)

将与给定搜索参数关联的值设置为给定值。如果有多个值,则删除其他值。

URLSearchParams.sort()
Run Code Online (Sandbox Code Playgroud)

按键对所有键/值对(如果有)进行排序。

URLSearchParams.toString()
Run Code Online (Sandbox Code Playgroud)

返回一个包含适合在 URL 中使用的查询字符串的字符串。

URLSearchParams.values()
Run Code Online (Sandbox Code Playgroud)

返回一个迭代器,允许迭代包含在此对象中的键/值对的所有值。

MDN 参考