Google可视化API调用多次权限被拒绝(IE)
Google Visualization API Called Multiple Times Permission Denied (IE)
我是Google Charts API的新手,正在尝试在我们的一个页面上实现它。
我所拥有的是一个经过客户端过滤的数据表 我想实时重新绘制我的图表客户端 在我(在SO上)发现一些问题后,如果你在页面加载后调用google.load(即通过点击一些按钮),它会删除你的html,解决方案似乎是google.load('version','package',{callback:…..})强制它追加,而不是注入。问题是,现在回调需要是一个全局函数,否则它不会解决内部上下文中的任何问题(或者看起来是这样)。。
由于以上原因,我当前的设置如下:
1) 位于的脚本https://www.google.com/jsapi包含
2) 调用google.load,将回调指针传递给我的函数,该函数具有绘图逻辑
现在#2是奇怪的部分,在我看到的例子中,"alert(zzz)"是作为一个演示回调传入的,对我来说,显然我想绘制图表。但图表都有不同的数据,因此每次调用函数时都会有所不同。
作为测试,我定义了一个名为"CALLBACK_TR"的全局变量,然后我将其指向一个匿名函数,该函数在每次用户单击按钮时都会用新数据重新定义。
这工作,数据被正确显示和更新,但如果我在IE中查看按钮点击(即函数调用)#2+的开发工具,我会看到一堆被拒绝权限的错误。有什么线索吗?
JS代码如下:
var CALLBACK_PTR;
function createChart(sChartType,sContainerID,oData,oOptions)
{
CALLBACK_PTR = null;
// Load the Visualization API and the piechart package.
google.load('visualization', '1.0',{'callback':'CALLBACK_PTR()'});
// Set a callback to run when the Google Visualization API is loaded.
//google.setOnLoadCallback(drawVisualization);
CALLBACK_PTR = function () {
var oDataTable = new google.visualization.arrayToDataTable(
oData
);
var wrapper = new google.visualization.ChartWrapper(
{
chartType: sChartType,
dataTable: oDataTable,
options:oOptions,
containerId:sContainerID
}
);
wrapper.draw();
//interactivity, will build on this in the future
google.visualization.events.addListener(wrapper,'ready',function(){
var chart=wrapper.getChart();
google.visualization.events.addListener(chart, 'select',function(){
var selectedItem = chart.getSelection()[0];
if (selectedItem) {
var value = oDataTable.getValue(selectedItem.row, selectedItem.column);
alert('Value:' + value);
}
})//end inner anon function
});
} // end draw function
}//end createChart
这一切都有点奇怪,但它确实有效,除了拒绝许可的事情。每当他们单击按钮(过滤可见数据)时,就会通过createChart(…)从客户端页面调用此函数。
您在JS调试器中看到的错误:
SCRIPT70: Permission denied
format+en,default+en.I.js, line 83 character 16
点击它让我在谷歌上搜索模糊代码:
if(1==a[ed])
如果我将鼠标悬停在"a"上,则所有属性(id、名称等)都表示"值"下的权限被拒绝。
任何意见都将不胜感激。
附言:定义回调函数后调用google.load难道没有意义吗?无论您使用回调:{}还是setOnLoadCallback,为什么不首先定义回调?尤其是在我的情况下,它发生了变化。
请随意批评由于使用包装器而不得不编写的交互代码,因为包装器准备好之前,wrapper.getChart是不起作用的,所以我不得不将我的图表侦听器包装在包装器"准备好"侦听器中。
编辑
我试着把它简化为:
function createChart(sChartType,sContainerID,oData,oOptions)
{
if(CHART){
//clear the old chart --TODO:, what if they want to generate multiple charts??
CHART.clearChart();
}
CALLBACK_PTR = null;
CALLBACK_PTR = function () {
var oDataTable = new google.visualization.arrayToDataTable(
oData
);
CHART = new google.visualization.LineChart(document.getElementById(sContainerID)).
draw(oDataTable, oOptions);
} // end draw function
// Load the Visualization API and the piechart package.
google.load('visualization', '1.0',{'packages':['corechart'],'callback':'CALLBACK_PTR()'});
}//end function createChart
但是仍然没有运气。。即使清除了其他帖子中建议的图表引用,仍然被拒绝获得许可。
另一次编辑上面的代码不好,行:
CHART = new google.visualization.LineChart(document.getElementById(sContainerID)).
draw(oDataTable, oOptions);
应为:
CHART = new google.visualization.LineChart(document.getElementById(sContainerID));
CHART.draw(oDataTable, oOptions);
否则,"CHART"就是任何东西。draw返回,这意味着我的.clearChart不起作用。
那么,既然有效,是否有"clearWrapper"等价物?因为我的原始代码使用了包装器,这样调用方就可以传入图表类型,而不必担心维护不同的对象。。
好的,下面是发生的事情。
CHART.clearChart()确实修复了这个问题-我确认了这一点。问题是我没有正确设置CHART引用,因为在我的第一个例子中,我在调用.draw之后定义了包装器就绪事件,这太晚了,您需要在调用draw之前定义就绪事件侦听器。
一旦我修复了这个问题,并且clearChart被正确调用,错误就停止了。
- CKeditor预览插件.js,为Chrome和IE进行编辑.因为它拒绝CSS样式
- Xmlhttprequest返回仅在IE上拒绝访问
- 使用IE'拒绝访问;s XDomainRequest打开(“get”,url)
- 当尝试仅在 IE 上使用 ajax 请求读取本地 xml 文件时,访问将被拒绝
- 讨厌IE,它拒绝回应JQuery Post
- 使用 IE 的 ajax 调用中拒绝访问
- 表单提交 - IE 访问被拒绝 - 同一域
- JS Submit() 访问被拒绝 IFrame IE.
- JavaScript IE 从 json 文件中读取数据 访问被拒绝
- jQuery 权限在 IE 中使用 AJAX 时被拒绝
- IE 8-9 SCRIPT5:提交时Zugriff verweigert(访问被拒绝)
- Google可视化API调用多次权限被拒绝(IE)
- 当从不同域加载框架页面的父窗口时,会导致IE中的权限被拒绝
- Ajax表单-图像上传|访问在ie中被拒绝
- Yammer JSON SDK在Chrome和FF中通过ADFS进行身份验证,但在IE中拒绝访问
- XDomainRequest open("get", url)在IE中给出访问拒绝错误
- 为什么这个JavaScript会导致“权限被拒绝”?IE中出现错误
- jquery代码显示IE Edge拒绝许可Iframes
- 在IE中拒绝访问网页
- jQuery输入文件点击方法,IE拒绝访问