【问题标题】:DOMException: Permission denied to access property "apply" on cross-origin objectDOMException:访问跨域对象上的属性“应用”的权限被拒绝
【发布时间】:2018-10-23 14:47:47
【问题描述】:

在过去的一天里,我一直在处理 FreeCodeCamp 作业“报价机”。除了推文按钮外,其他一切都在工作。您可以在一个单引号上使用任意数量的推文,但不能在多个上使用(这意味着在您发布一个推文后,您无法转到下一个引用并推文)。

我在尝试打开新窗口时遇到的错误是

DOMException: Permission denied to access property "apply" on cross-origin object

我一直在谷歌上搜索该错误,但找不到可以应用的修复程序

Here's the project(很小)

剪辑

// snip
methods:{
  twitter() {
    this.twitter = window.open('https://twitter.com/intent/tweet/?text='+this.quote+'&hashtags=quotes');
  },
  refreshQuote() {
    // etc
<a @click="refreshQuote">
///
</a>
<v-btn fab depressed outline large class="center" @click="twitter">

我打电话给tweet()的原因是因为我在@click找不到window.openwork,出错了

“点击”事件处理程序中的错误:“TypeError: window is undefined”

谢谢。

【问题讨论】:

  • "...或者类似的东西"
  • “点击”事件处理程序中的错误:“类型错误:窗口未定义”。那我会把它添加到主帖中。
  • 看起来您的 HTML / 模板格式不正确。您的&lt;transition&gt; 标签在&lt;a&gt; 标签内开始,但&lt;/transition&gt;&lt;/a&gt; 之外。 更新:这似乎不是您问题的根源
  • 您还有一些 &lt;h1&gt;&lt;span&gt; 标签格式错误。

标签: javascript vue.js


【解决方案1】:

您正在为 this.twitter 分配一个 window 句柄(window.open() 的返回值),直到那时为止,这就是您的 twitter 方法。

我认为没有理由保留对打开窗口的引用,所以只需将代码更改为

twitter() {
  window.open(`https://twitter.com/intent/tweet/?text=${encodeURIComponent(this.quote)}&hashtags=quotes`)
}

同样如上所述,您的 HTML 格式不正确,有几个结束标记乱序。你应该解决这个问题。

https://codepen.io/anon/pen/RyJBXa

【讨论】:

  • 您是对的,非常感谢您抽出宝贵的时间!我尝试了很多东西,但不知何故没有尝试。我仍然想知道为什么 @click="window.open" 不起作用:|但这本身就是一个问题。
  • @breke 我不得不深入研究 Vue 源代码,但我怀疑模板表达式是根据组件/Vue 上下文评估的,即它会变成 this.window.open(...)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多