标签: client-side

保存javascript生成的文档

Javascript可以操纵浏览器显示的文档,因此以下内容:

<script>
    document.write("<table><tr><td>Hola</td><td>Adios</td></tr></table>");
</script>
Run Code Online (Sandbox Code Playgroud)

将使浏览器显示一个表,就像它是原始HTML文档一样:

<table>
    <tr>
        <td>Hola</td>
        <td>Adios</td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

有没有办法保存/提供此文档内容?

目前我们使用Ext-js生成一些很好的报告,我想做的是拥有它的"text/html"版本(我的意思是,不需要javascript的东西)

因此,在页面的最后,我将添加一个按钮:"另存为blaba",文档应显示文本/纯文本版本.

我现在能想到的唯一方法是将内容写入javascript变量,如:

 var content = document.toString(); // or something magic like that.
 // post it to the server
Run Code Online (Sandbox Code Playgroud)

然后将该值发布到服务器,并让服务器显示该值.

 <%=request.getParameter("content-text")%>
Run Code Online (Sandbox Code Playgroud)

但看起来很棘手.

还有其他选择吗?

编辑

好的,我几乎得到了它.现在我只需要弹出新窗口,这样选项"你想保存它吗"

这是我到目前为止所得到的

<script>
    document.write("<div id='content'><table><tr><td>Hola</td><td>Adios</td></tr></table></div>");
    function saveAs(){
        var sMarkup =  document.getElementById('content').innerHTML; 
        var oNewDoc = document.open('application/vnd.ms-excel');        
        oNewDoc.write( sMarkup + "<hr>" );
        oNewDoc.close();
    }
</script>

<input type="button" value="Save as" onClick="saveAs()"/>
Run Code Online (Sandbox Code Playgroud)

这条线:

    var oNewDoc = document.open('application/vnd.ms-excel');        
Run Code Online (Sandbox Code Playgroud)

应指定新的内容类型,但它将被忽略.

javascript document server-side client-side html-generation

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

在网络环境中自我更新桌面应用程序的最佳实践

我已经通过谷歌和搜索引擎优化搜索了这个问题的可能答案,但只能找到分散在该地方的一小部分信息,其中大多数似乎是个人意见.

我知道这个问题可以被认为是主观的,但我不是在寻找个人意见,而是寻找具有理由的事实(例如过去的经验),甚至是寻找描述最佳实践的博客/维基的单一链接(这是我更喜欢诚实的东西).我不想要的是如何使这项工作,我知道如何创建自我更新的桌面应用程序.

我想知道创建自我更新桌面应用程序的最佳实践.我特别好奇的那种最佳实践是:

  • 如果客户端软件已过期,您是否强制更新,但在尝试与其他版本的软件或数据库本身进行通信时不会中断?如果是这样,您如何表示这一突破性变化?
  • 您应该多久检查一次更新?每周/每日/每小时,究竟是为什么?
  • 用户是否可以看到更新,或者从UI的角度在幕后运行?
  • 如果不是重大更新,您是否应该通知用户有可用的更新?(例如,在应用程序的远程部分修复单个按钮,只有一个用户实际需要)
  • 你应该尝试修补应用程序,还是从头开始重新下载整个应用程序?
  • 您是否应该允许用户从中央位置更新或仅允许通过指定的应用程序进行更新?(对于封闭的业务应用程序).

当然有一些关于这个东西的书面规则/建议?关于许多应用程序最烦人的事情之一是更新,因为很难在"过时"和"在用户面前"之间找到良好的平衡.

如果有人认为这是用单个客户端编写的.net C#,在与更新服务器具有持续可用连接的机器上运行,所有这些机器都通过应用程序相互通信,并且所有这些机器都与中央数据库服务器通信.

client-side auto-update

12
推荐指数
2
解决办法
4386
查看次数

使用CXF使用HTTP基本身份验证使用Web服务时出现401错误

我正在尝试在JUnit测试中使用使用Apache CXF的HTTP基本身份验证的远程Web服务.

我得到的错误是:

javax.xml.ws.WebServiceException: Failed to access the WSDL at: http://localhost:8080/services/MyService?wsdl. It failed with: 
    Server returned HTTP response code: 401 for URL: http://localhost:8080/services/MyService?wsdl.
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.tryWithMex(RuntimeWSDLParser.java:151)
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:133)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:254)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:217)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:165)
    at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:93)
    at javax.xml.ws.Service.<init>(Service.java:76)
    at com.wave2.marketplace.importer.impl.adportal.ws.MyServiceService.<init>(MyServiceService.java:37)
    at com.wave2.marketplace.importer.impl.adportal.MyWSTest.testConsumingTheWS(MyWSTest.java:22)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at junit.framework.TestCase.runTest(TestCase.java:168)
    at junit.framework.TestCase.runBare(TestCase.java:134)
    at junit.framework.TestResult$1.protect(TestResult.java:110)
    at junit.framework.TestResult.runProtected(TestResult.java:128)
    at junit.framework.TestResult.run(TestResult.java:113)
    at junit.framework.TestCase.run(TestCase.java:124)
    at junit.framework.TestSuite.runTest(TestSuite.java:232)
    at junit.framework.TestSuite.run(TestSuite.java:227)
    at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) …
Run Code Online (Sandbox Code Playgroud)

java web-services cxf client-side basic-authentication

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

如何存储持久数据客户端

我需要以编程方式在客户端存储数据,而不必在每次页面加载时从服务器传输数据.我考虑生成一个动态JavaScript文件,其中包含用户当前会话所需的数据,并确保它被缓存,但这看起来非常混乱,我可以想到这样一种方法有一些缺点.

如何在客户端存储持久数据?

javascript storage persistence client-side

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

您如何避免在服务器和客户端重复验证?

您如何避免在服务器和客户端重复验证?是否有一个Web编程平台可以从另一个生成一个,所以我不必保持两个同步?

synchronization server-side client-side

11
推荐指数
2
解决办法
1706
查看次数

JSON中的多对多关系

考虑这种情况:

您希望以JSON格式向客户端发送一些数据,并且您不想返回服务器.数据由15名教师和100名学生组成.这些实体之间的关系是多对多的(每个学生都学习很多老师,每个老师都教许多学生).

在客户端,向用户显示学生列表.点击任何学生后,他/她的老师名单将被呈现给用户,点击老师后,将显示该老师的所有学生的名单.这导致从学生到教师和副verca的无限点击式导航.

现在,如您所知,JSON仅表示此形式中的一对多关系:

{ "s1" : [ "t1", "t2"], "s2" : [ "t2", "t4" ], "s3" : [ "t1", "t3", "t4"], ...}
Run Code Online (Sandbox Code Playgroud)

你对如何做到这一点有任何想法吗?

json many-to-many client-side

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

Heroku上的Socket.io:客户端代码

我一直无法在Heroku上托管的Node.js应用程序上为我的JS客户端代码加载socket.io库.

现在,我在index.html文件的末尾有这一行:

<script type="text/javascript" src="/socket.io/socket.io.js"></script> 
Run Code Online (Sandbox Code Playgroud)

但是,当我socket = io.connect('http://myherokuapp');在我的JS客户端代码中执行时,我得到了预期的"io未定义"错误.

知道如何在Heroku上正确加载库吗?

谢谢!

client-side heroku node.js socket.io

11
推荐指数
1
解决办法
2866
查看次数

检查复选框已禁用(Jquery)

目的是;
如果禁用复选框,则不执行任何操作
如果启用并选中了复选框,请设置按钮的样式.
这是我到目前为止所得到的;

 $(document).ready(function (e) {


        $(".checkbox").live("click", function () {

            if ($(this).hasAttribute('disabled')) {
                return false;
            }
            var isAnyChecked;

            $("input[type=checkbox]").each(function () {
                var checkedValue = $(this).attr("checked");
                if (checkedValue == "checked") {
                    isAnyChecked = true;
                }


            });

            if (isAnyChecked) {
                $("#<%= btnConfirm.ClientID %>").css("display", "block");

            } else {
                $("#<%= btnConfirm.ClientID %>").css("display", "none");

            }


        });  });
Run Code Online (Sandbox Code Playgroud)

我试过.is(':disabled'),.hasAttr(),.prop().attr().任何帮助将不胜感激.

javascript checkbox client-side

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

在javascript变量中保存密码 - 安全隐患?

在浏览器的javascript变量中保留用户密码是否会暴露任何特定的安全漏洞,超出基于浏览器的客户端的常见安全漏洞?

考虑这个片段作为一个简单的例子 - jsfiddle在这里

<label for="password">Password</label>
<input type="password" id="password"/><br/><br/>
<button type="button" id="pwdButton">Store password in window.password</button>

<script>
    function getContentsOfPasswordField() {
        return jQuery("input#password").val();
    }

    jQuery("button#pwdButton").on("click", function() {
        window.password = getContentsOfPasswordField();
        alert("'" + password + "' stored in global var window.password")
    });
</script>
Run Code Online (Sandbox Code Playgroud)

在此示例中,密码变量是全局的,并且在页面的生命周期内持续存在,只是为了使其尽可能地打开攻击并提供最坏情况.也许限制变量的范围/生命周期可以保护它免受某些类型的攻击?

立即想到的攻击是XSS,但是如果客户端首先容易受到XSS的攻击,那么攻击者无论如何都可以通过密钥记录来读取密码(请参阅此内容),因此将其保存在变量中不会正如我所看到的,增加了对XSS攻击的漏洞.

请注意问题的关键不在于这样做是否是一种不好的做法,这更多是关于客户端Web应用程序安全性的基本问题.

javascript security passwords xss client-side

11
推荐指数
1
解决办法
2603
查看次数

在Backbone.js中实现Backbone.Subset.js以从父集合中过滤模型

这篇stackoverflow文章中,我读到了有关过滤主干集合和使用子集的内容.

一个答案(通过雪橇)建议使用backbone.subset.js(用法示例).

我在backbone.subset.js上找不到任何进一步的资源,但我没有将它实现到我的项目中.

似乎backbone.subset.js是我想要实现的完美解决方案.

(拥有一个"父"集合,始终包含所有模型,并根据用户输入将相关模型从父集合过滤到backbone.subset集合.)

我的"父母"系列,包含所有任务:

var TasksAll = Backbone.Collection.extend({
    url: '/tasks', // the REST url to retrieve collection data
    model: Task // the models of which the collection consists of
});
var allTasks = new TasksAll();
Run Code Online (Sandbox Code Playgroud)

现在我想为task.status = 0的任务创建一个子集集合:

var TasksTrash = new Backbone.Subset({
    superset: allTasks,
    filter: function(Task) {
        return Task.isTrash();
    }
});
var trashTasks = new TasksTrash();
Run Code Online (Sandbox Code Playgroud)

在Task模型中,方法"isTrash"在以下情况下返回true:

this.get('status') == 0
Run Code Online (Sandbox Code Playgroud)

a)backbone.subset.js上还有更多资源吗?

b)如何实施上述方案?

c)我可以将"超集"和"过滤器"选项作为参数传递给Backbone.Subset初始化函数吗?

d)我查看了backbone.subset.js代码,当我'重置'我的父集合时,我的子集集应该立即更新,对吧?

PS:我对Backbone很新.谢谢你的帮助.

javascript client-side

10
推荐指数
1
解决办法
1178
查看次数