小编use*_*099的帖子

绕过本地文件系统上的Chrome Access-control-allow-origin?

我已经在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%的应用用户来说是不必要的.

感谢您的任何建议/选择!

javascript jquery google-chrome same-origin-policy

28
推荐指数
1
解决办法
4万
查看次数

将大量数据加载到内存中 - 最有效的方法吗?

我有一个基于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)

javascript jquery data-structures

20
推荐指数
2
解决办法
2万
查看次数

使用jQuery在不使用jQuery UI的情况下使用div模拟frame-resize行为?

我正在将客户端的网站从框架集转换为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

如果您尝试使用棕色条调整标记为"侧边栏"的内容,则可以看到问题.

html javascript jquery frameset

12
推荐指数
1
解决办法
1万
查看次数

perl中的正则表达式和重复字符类

我正在尝试编写一个正则表达式,可以提取(可能是多个)四个十六进制数字/字母的字符串.

我可以这样做: /^[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

等等.每个字符串都在它自己的行上.

谢谢!

regex perl

6
推荐指数
1
解决办法
6345
查看次数

IE7是否不完全支持javascript的insertBefore方法?

我有以下代码,这些代码在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和其他浏览器一样不支持此方法?

谢谢

javascript internet-explorer-7 ie7.js

5
推荐指数
1
解决办法
4262
查看次数

jQuery的getScript和本地文件系统 - 限制/替代?

现在我正在开发一个基于本地文件系统的帮助系统.它的目的是附带一个不在支持互联网的机器上使用的产品,因此它必须是一个独立的网页,不依赖于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拒绝权限

javascript jquery

4
推荐指数
1
解决办法
5956
查看次数