javascript 错误:由于错误8150002e,无法完成操作

2izufjch  于 2023-06-28  发布在  Java
关注(0)|答案(1)|浏览(483)

我正在使用Outlook VSTO加载项,在其中使用“System.Windows.Forms.WebBrowser”来显示加载项功能。
一个功能要求是与云帐户(如OneDrive,Dropbox)有Oauth连接。当用户点击按钮(例如'Connect OneDrive'),我们在JavaScript代码(ES6)中使用oauth-url调用'window.open'。
我面临的问题是,如果用户没有输入任何凭据并关闭窗口,然后再次尝试连接云帐户(通过单击“连接OneDrive”),我会收到异常(错误:由于错误8150002 e,无法完成操作。)。
我在网上找不到有关错误代码“8150002 e”的任何信息。
这种例外并不总是存在,但大约有50%的时间。
任何帮助将不胜感激。
我尝试过的:
1.每次调用www.example.com时更改windowName参数window.open
1.为window Object设置全局变量。
1.使用_blank参数每次打开一个新窗口。

  1. 5-6次后,错误出现,5-6次后错误消失,认证窗口开始像以前一样出现。
    1.在“window.open”中打开一个简单的静态HTML页面,以验证问题是否与HTML页面有关。上述问题仍然存在。
    1.以编程方式重置System.Windows.Forms.WebBrowser。
    1.删除cookie。
    1.我们不是window.open从JavaScript代码调用www.example.com,而是调用VSTO代码来打开浏览器窗口,错误仍然存在。

编辑:在https://github.com/vinay-x/SampleAddin创建一个最小可行示例

与问题相关的代码:

  • SDXOLForm1.cs(将浏览器导航到localhost:8001上托管的SamplePage.HTML)SamplePage.HTML(包含一个按钮,该按钮调用window.open函数)。

示例应用程序有一个包含webBrowser控件的windows窗体,该控件导航到一个包含按钮的简单HTML页面。

zujrkrfu

zujrkrfu1#

不得不处理一些IE11的东西,我遇到了这个问题。我找到的解决这个问题的方法是在调用window.open之前将window变量设置为null。
所以对于你的例子,你有这个:

function myFunction() {
    window.open("https://www.w3schools.com", 'BackfliptOAuth', "width=800,height=800,center=true,useContentSize=true");
}

我把它修改成这样:

var win = null;
function myFunction() {
    win = null;
    win = window.open("https://www.w3schools.com", 'BackfliptOAuth', "width=800,height=800,center=true,useContentSize=true");
}

相关问题