我已经在SO上阅读了其他相同的原始策略主题,但我还没有看到任何与本地文件系统相关的解决方案.
我有一个网络应用程序(在一个松散的意义上)必须在本地服务.我试图在用户加载页面后加载大量数据,具体取决于他们在网页上做了什么.在Firefox 3.5和IE8中,我可以使用jQuery的AJAX()和GetScript()方法来执行此操作,但在Chrome中由于同源策略而失败.
XMLHttpRequest无法加载file://test/testdir/test.js.原产地null是不允许的by Access-Control-Allow-Origin.
这种情况发生在我做一些简单的事情时
$.getScript("test.js");
Run Code Online (Sandbox Code Playgroud)
这在IE和Firefox中运行良好.
在阅读了大量有关此内容之后,我决定尝试直接写入文档的头部.在Chrome的控制台中,我键入了以下内容:
var head = document.getElementsByTagName("head")[0];
var script =document.createElement('script');
script.id = 'uploadScript';
script.type = 'text/javascript';
script.src = "upload.js";
head.appendChild(script);
Run Code Online (Sandbox Code Playgroud)
这在粘贴到控制台中时工作正常 - <script...test.js</script>元素被添加到头部,评估,并且内容被加载到DOM中.
我认为这是成功的,直到我将此代码放入函数调用.从函数调用时,相同的确切代码会将元素添加到但不会评估JavaScript文件.我无法弄清楚为什么.如果我使用Chrome的控制台停止执行它正在添加元素的方法并运行上面的代码,它就不会对它进行评估.但是,如果我取消暂停执行并运行完全相同的代码(在控制台窗口中粘贴它),它就可以工作.我无法解释这一点.以前有人处理过这个吗?
我已经阅读了以下SO帖子,但他们没有描述我的问题:
绕过同源策略的方法
XMLHttpRequest Origin null不允许Access-Control-Allow-Origin for file:///到file:///(无服务器)
跨站点XMLHttpRequest
同样,我最后的办法是在网页加载时加载所有数据 - 这可能导致加载网页最多延迟10秒,这对90%的应用用户来说是不必要的.
感谢您的任何建议/选择!
我有一个基于Web的文档搜索/查看系统,我正在为客户开发.该系统的一部分是一个搜索系统,允许客户端搜索文档中包含的术语[s].我已经创建了必要的搜索数据文件,但是需要加载大量数据,加载所有数据需要8-20秒.数据分为40-100个文件,具体取决于需要搜索的文档.每个文件都在40-350kb之间.
此外,此应用程序必须能够在本地文件系统上运行,也可以通过Web服务器运行.
当网页加载时,我可以生成我需要加载的搜索数据文件的列表.必须先加载整个列表,然后才能认为网页正常运行.
有了这个序言,让我们来看看我现在是怎么做的.
在我知道整个网页已加载后,我调用了一个loadData()函数
function loadData(){
var d = new Date();
var curr_min = d.getMinutes();
var curr_sec = d.getSeconds();
var curr_mil = d.getMilliseconds();
console.log("test.js started background loading, time is: " + curr_min + ":" + curr_sec+ ":" + curr_mil);
recursiveCall();
}
function recursiveCall(){
if(file_array.length > 0){
var string = file_array.pop();
setTimeout(function(){$.getScript(string,recursiveCall);},1);
}
else{
var d = new Date();
var curr_min = d.getMinutes();
var curr_sec = d.getSeconds();
var curr_mil = d.getMilliseconds();
console.log("test.js stopped background loading, time is: " + curr_min …Run Code Online (Sandbox Code Playgroud) 我正在将客户端的网站从框架集转换为div.客户端具有的一个功能是侧边栏,可以根据用户需要的空间大小调整大小.使用框架内置了这个侧边栏的大小调整.但是,我在jQuery中模拟这个功能有些困难.
我不希望使用jQuery UI来实现这一点,我不需要UI套件提供的所有额外功能,而只是编写几行代码来处理这个问题.
我只需要在水平面上调整大小,垂直尺寸是固定的.
目前我有一个(某种程度)有效的解决方案.侧栏div可以调整大小,但只有当用户点击可调整大小的div时,拖动鼠标,然后再次单击div(删除mousemove事件).
我想要的体验是:用户将鼠标悬停在可调整大小的div上,按下鼠标按钮,然后将div拖动到更大/更小,然后释放按钮.
我遇到的问题是:如果用户点击我的可调整大小的div,然后尝试拖动它使其变小/变大,鼠标变为"否"图标,并且我的div的透明版本是药物周围用鼠标.
也许通过查看我的代码可以更好地解释这一点:
$(document).ready(function() {
var i = 0;
$('#dragbar').mousedown(function(){
$('#mousestatus').html("mousedown" + i++);
$(document).mousemove(function(e){
$('#position').html(e.pageX +', '+ e.pageY);
$('#sidebar').css("width",e.pageX+2);
})
console.log("leaving mouseDown");
});
$(document).mouseup(function(){
$('#clickevent').html('in another mouseUp event' + i++);
$(document).unbind('mousemove');
});
});
Run Code Online (Sandbox Code Playgroud)
和HTML:
<div id="header">
header
<span id="mousestatus"></span>
<span id="clickevent"></span>
</div>
<div id="sidebar">
<span id="position"></span>
<div id="dragbar">
</div>
sidebar
</div>
<div id="main">
main
</div>
<div id="footer">
footer
</div>
Run Code Online (Sandbox Code Playgroud)
这是一个基本布局工作的临时网页:
http://pastehtml.com/view/1crj2lj.html
如果您尝试使用棕色条调整标记为"侧边栏"的内容,则可以看到问题.
我正在尝试编写一个正则表达式,可以提取(可能是多个)四个十六进制数字/字母的字符串.
我可以这样做:
/^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]/
但有更好的方法吗?
它似乎是重复运算符:
a {n}匹配'a'正好重复n次.
a {n,}匹配'a'重复n次或更多次.
a {n,m}匹配'a'在n和m次之间重复.
会工作,但以下正则表达似乎不起作用:
/^[A-Fa-f0-9]{4}+/
Run Code Online (Sandbox Code Playgroud)
我正在尝试匹配字符串,如:
AA00
AA00FFAA
0011FFAA0022
等等.每个字符串都在它自己的行上.
谢谢!
我有以下代码,这些代码在Chrome,IE8和FF中非常有效。但是,当我用IE7测试它时出现错误。有人知道这里发生了什么吗?
function do_replace(s, p1,p2,p3,child_node,syn_text) {
reg = new RegExp('[h\|H][1-7]');
if(p1.length>0){ //this might not be necessary
//create textnode
var text_node = document.createTextNode(p1);
child_node.parentNode.insertBefore(text_node,child_node); //errors out here in IE7
}
Run Code Online (Sandbox Code Playgroud)
IE7的最后一行显示的代码错误为“ htmlfile:Invalid arguments”。通过调试器查看代码时发生错误。运行此脚本时,child_node,parentNode和text_node的构成与Firefox和Chrome相同。
有任何想法吗?还是IE7和其他浏览器一样不支持此方法?
谢谢
现在我正在开发一个基于本地文件系统的帮助系统.它的目的是附带一个不在支持互联网的机器上使用的产品,因此它必须是一个独立的网页,不依赖于Web服务器.
这引入了一些挑战.也就是说,文件所在的目录结构需要"向上和向上"导航以访问显示帮助系统所需的某些.js文件.这个用法是使用jQuery getScript函数实现的,但我在本地文件系统上遇到了一些问题.
乍一看,似乎我的网页是在C:/ dev/webpage/html /目录下提供的,而我需要的文件是在C:/ dev/webpage/js /(topic)/file.js ,我可以构建一个绝对路径(file:/// ...)并将其传递给getScript函数.
但是,在测试之后,似乎getScript函数似乎不允许我从html目录(其中html文件所在的具有网页主代码的位置)上升到一个级别.不幸的是,我无法更改目录结构,也无法更改.js文件结构/格式.
是否有一种替代方法可以加载/执行文件结构中需要"反复"的javascript文件?
谢谢,
编辑 - 我确实看过这个类似于我的问题,但在我的情况下,将数据更改为JSON格式的建议不是一个选项:在本地文件上使用Javascript/jQuery拒绝权限