本文介绍了防止谷歌选择器弹出窗口被浏览器阻止的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经使用javascript在我的网站上实现了Google Picker。但是每当按下一个初始化选择器的按钮时,它就会被浏览器阻止。
I have implemented Google Picker in my website using javascript. But Whenever a button to initialize picker is pressed, it gets blocked by browser.
我在这里搜索并尝试了一些解决方案,如:
I have searched and tried few solutions here like:
- 添加
client.js
而不是api.js
- 设置
'立即'=假;
- Adding
client.js
instead ofapi.js
- Setting
'immediate' = false;
But they are not working for me. Please help !
推荐答案
我找到了一个解决方案,如果从click事件触发弹出窗口,那么浏览器不会阻止它,所以主要思想是一次启动,然后通过click事件直接触发选择器创建。
I have found a solution for this, if the popup is fired from click event then browsers will not block it, so the main idea is to initiate once and afterward trigger the picker creation directly by the click event.
为此,您可以按照以下步骤操作:
To achieve this you can follow these steps:
- 使用
客户端
而不是auth2
- 初始化
客户端
-
onckick
事件必须触发gapi.auth2.getAuthInstance()。signIn()
一次,之后必须触发google.picker.PickerBuilder()
- Use
client
instead ofauth2
- Initialize
client
onckick
event must trigger thegapi.auth2.getAuthInstance().signIn()
once, afterward it must triggergoogle.picker.PickerBuilder()
或者:
var GoogleAuth;
var oathToken;
gapi.load('client', function () {
gapi.client.init({client_id: "MY_CLIENT_ID", scope: "MY_SCOPE"}).then(function () {
GoogleAuth = gapi.auth2.getAuthInstance();
});
});
function pick() {
if (!oathToken) {
GoogleAuth.signIn().then(function () {
const user = this.GoogleAuth.currentUser.get();
oathToken = user.getAuthResponse().access_token;
});
} else {
const picker = new google.picker.PickerBuilder()
.addView(google.picker.ViewId.DOCS)
.setOAuthToken(oathToken)
.setDeveloperKey("MY_DEVELOPER_KEY")
.setCallback((data) => myCallBack(data)).build();
picker.setVisible(true)
}
}
function myCallBack(data) {
if (data[google.picker.Response.ACTION] === google.picker.Action.PICKED) {
const docs = data[google.picker.Response.DOCUMENTS];
const url = docs[0][google.picker.Document.URL];
const name = docs[0][google.picker.Document.NAME];
console.log("Picked file's name: ", name);
console.log("Picked file's url: ", url);
// etc...
}
}
这篇关于防止谷歌选择器弹出窗口被浏览器阻止的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!