0

我即将发布一个单页应用程序(html + css + js)。

该应用程序没有外部依赖,这意味着用户可以下载所有文件并将它们安装在单独的位置。根据过去的经验,这是一个糟糕的情况,至少有两个原因:

  • 用户不会收到推送到主要位置的更新
  • 他们倾向于调整他们的本地副本,我最终不得不支持原始代码的多种变体

有没有一种优雅的方法来防止这种情况?我正在考虑一些强有力的方法,比如在代码中隐藏日期检查,但我不想走得太远而影响业务......

4

5 回答 5

2

首先,您应该拒绝支持最终用户已经调整过的代码。真的。

其次,如果人们正在下载您的应用程序以离线使用,那么也许您应该通过向您的应用程序添加离线模式来接受这一点。这将阻止人们手动下载文件(因为它在未连接时仍然有效)并且他们仍然会在可用时获得更新。查看HTML5 的各种离线功能,包括缓存清单

于 2012-10-04T22:32:56.493 回答
1

两种选择:

  1. 将页面放在服务器上某个不起眼的文件夹路径下。然后添加检查以查看文件夹路径是否存在于location.href. 如果用户将您的文件保存在本地,他们可能不会复制所有文件夹,只会保持文件名不变。

    例如,http://www.pathtosharepoint.com/stackoverflow/index.htm

    <script>
    if(!/stackoverflow/.test(location.href))location="about:blank";
    </script>
    
  2. 设置一个cookie。如果页面保存在本地,cookie 将不可读。

    if(!/stackoverflow/.test(document.cookie))location="about:blank";

于 2012-10-05T11:11:31.220 回答
1

没有。你只需要说服人们这是一件坏事。不要为外部托管的应用程序提供支持,但除此之外,您无能为力。

于 2012-10-04T22:19:34.087 回答
0

我看到了这个,觉得很有趣:

http://closure-compiler.appspot.com/home

查看“高级”单选按钮....

于 2012-10-04T23:57:16.783 回答
0

简而言之:不,你不能

但是如果你混淆和缩小你的代码,并通过你的应用程序进行一些反复制检查,这会使非法复制者的工作更加困难,因为他们必须知道一些 JS 才能解锁你的应用程序。但我必须重复一遍:基于客户端的防复制应用程序(并且可能永远是)只是一个梦想。

于 2012-10-04T22:30:18.290 回答