如果这似乎是重复的道歉,但我无法看到任何类似问题的明确答案.
当尝试对某些XML执行CORS请求时,我不断从IE8获得"访问被拒绝"JS错误.
我的代码改编自这个例子:
// Create the XHR object.
function createCORSRequest(method, url) {
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr) {
// XHR for Chrome/Firefox/Opera/Safari.
xhr.open(method, url, true);
} else if (typeof XDomainRequest != "undefined") {
// XDomainRequest for IE.
xhr = new XDomainRequest();
xhr.open(method, url);
} else {
// CORS not supported.
xhr = null;
}
return xhr;
}
// Helper method to parse the title tag from the response.
function getTitle(text) {
return text.match('<title>(.*)?</title>')[1];
}
// Make …Run Code Online (Sandbox Code Playgroud) javascript ajax xmlhttprequest cross-domain internet-explorer-8
我很难找到这个问题的最新答案,而且经常没有时间在这里回答问题,所以我想发布这个,这样我就可以回答我自己的问题,因为我找到了解决方案。
我正在为 Chrome 和 Firefox 制作一个 Web 扩展。Firefox 有一个问题,当我从选项页面 JS 调用后台函数,将一些数据设置到后台页面中的 var,然后关闭选项页面时,我会收到错误“无法访问死对象”代码稍后尝试访问已设置的变量。这是代码:
选项.js
formInOptions.addEventListener('submit', function(e){
e.preventDefault();
chrome.extension.getBackgroundPage().defaults({
keyname: e.target['form-field'].value
}, function(){
// data saved cb
});
});
Run Code Online (Sandbox Code Playgroud)
背景.js
function defaults(oNewDefaults) {
// Global oDefaults already exists, and trying to access this after the options page is closed causes the error.
chrome.storage.local.get({
config: {}
}, function(data) {
let config = data.config;
config.defaults = config.defaults || {};
config.defaults = Object.assign(config.defaults, oNewDefaults); // Merge incoming obj into existing obj
chrome.storage.local.set({
config: config
}, …Run Code Online (Sandbox Code Playgroud) javascript google-chrome-extension firefox-addon-webextensions
我正在制作一个扩展,允许用户存储具有身份验证凭据(用户/通行证)的代理服务器并在服务器之间切换。我正在侦听该webRequest.onAuthRequired事件,当服务器挑战身份验证时,证明用户已保存的用户名/密码,如下例所示provideCredentialsSync: https: //developer.mozilla.org/en-US/docs/Mozilla/Add- ons/WebExtensions/API/webRequest/onAuthRequired#Examples
问题是,当提供这些凭据时,它们似乎会保存/缓存在开发人员无权访问的扩展中的某个位置,然后不断地重复使用。因此,如果扩展用户随后将其凭据更改为不正确,则浏览器会自动继续使用其Proxy-Authorization标头中经过身份验证的凭据,并且请求会成功。反之亦然,如果身份验证失败,并且请求按照上面的示例被取消,则用户将其信用更改为正确的,服务器不会再次询问身份验证,并且请求失败,并且无法提供新的信用。
Chrome 也不允许修改传出Proxy-Authorization标头,这意味着不能在代码中删除/更改它以强制服务器再次质询。
所以我认为核心问题是:
有谁知道从侦听器返回时详细信息保存在哪里
webRequest.onAuthRequired,有没有办法清除/清除?
返回时实际发生了什么{cancel: true}以及为什么对该服务器的所有请求都会继续失败而不触发另一个onAuthRequired?
感谢任何人都能发出的光芒!
javascript authentication proxy google-chrome-extension firefox-addon-webextensions
我正在尝试创建一个信息框,其中包含用于切换框内容的选项卡,如下所示:http://www.cssnewbie.com/build-a-tabbed-box-with-css-and-jquery/
简单易用一些CSS和jQuery吧?问题是我正试图找出一种方法来使用语义标记,因此当禁用CSS/JS时,它只是以正确的顺序显示其内容的标题.我见过的所有例子都是这样的:
<div id="box-nav">
<ul>
<li>Content head 1</li>
<li>Content head 2</li>
<li>Content head 3</li>
</ul>
</div>
<div id="box-content">
<div id="content-1">
<p>Blah 1. </p>
</div>
<div id="content-2">
<p>Blah 2. </p>
</div>
<div id="content-3">
<p>Blah 3. </p>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这使得通过分隔标题及其内容很容易构建,但我想使用此标记制作一个:
<div id="content-1">
<h2>Content head 1</h2>
<p>Blah 1. </p>
</div>
<div id="content-2">
<h2>Content head 2</h2>
<p>Blah 2. </p>
</div>
<div id="content-3">
<h2>Content head 3</h2>
<p>Blah 3. </p>
</div>
Run Code Online (Sandbox Code Playgroud)
因此它会像普通的HTML一样优雅地降级,但是如果不使用jQuery来重新排列标记,我就无法理解它.
有人知道干净的方式吗?
javascript ×3
firefox-addon-webextensions ×2
ajax ×1
cross-domain ×1
css ×1
html ×1
jquery ×1
proxy ×1