如何在TiddlyWiki中完全禁用/删除cookie?

时间:2011-06-27 14:33:01

标签: javascript cookies tiddlywiki

我真的需要帮助。我正在开发一个TiddlyWiki作为我的组织的导航工具,用于在我们极其缓慢和繁琐的内​​部网站/服务器上查找文件。

问题:TiddlyWiki保存到cookie中的一些选项显然与内部网站自己的cookie选项冲突。 TiddlyWiki必须在内部网站上托管/加载,因此其cookie与内部网站具有相同的URL /名称。各种有用的TiddlyWiki插件都会留下一些cookie,这些cookie可以阻止一个人将内容上传到内部网站,甚至可以阻止它打开。

在查看网站后,告诉本网站的每个用户删除他们的cookie是不可取的。

我无法访问cookie的内容,因为我们的信息管理权限过程缓慢,复杂,甚至无法理解我的问题。

我做了很多事情试图解决这个问题:

我使用了CookieManager插件并将其设置为禁止任何Cookie,但Cookie仍然被删除。

我尝试过禁用插件,重新上传和测试。摆脱几个有用的插件后,我至少能够访问内部网站。但是,我必须禁用高级搜索插件才能解决无法上传到内部网站的问题。我真的需要高级搜索,因为它既提供了一些访问者/编辑者的隔离,也是为我的组织使用TiddlyWiki的主要销售功能之一。

我尝试将高级搜索插件(特别是)中的选项重命名为可能不会被我们的内部网站用作cookie选项的名称。这似乎不起作用。

的工作原理是手动编辑TiddlyWiki源代码以注释掉saveCookie函数的内部结构:

function saveCookie(name)
{
//  var cookies = {};
//  for(var key in config.options) {
//      var value = getOption(key);
//      value = value == null ? 'false' : value;
//      cookies[key] = value;
//  }
//  document.cookie = 'TiddlyWiki=' + String.encodeHashMap(cookies) + '; expires=Fri, 1 Jan 2038 12:00:00 UTC; path=/';
//  cookies = getCookies();
//  for(var c in cookies) {
//      var optType = c.substr(0,3);
//      if(config.optionHandlers[optType])
//          removeCookie(c);
//  }
}

我的问题是,必须在每次升级TiddlyWiki模板后完成此操作,在执行Windows所需的复制/粘贴/文件重命名步骤以允许TiddlyWiki保存之后,我有时需要这样做。 (这些步骤经常搞砸了TiddlyWiki模板,因此它不认为TiddlyWiki文件是有效的。然后它将拒绝保存更改,直到我升级。)

我不介意手动这么做。这很麻烦,但不需要很长时间。我不能指望我们网站团队的任何其他成员都这样做,我需要让我们的TiddlyWiki处于一个可以在没有我的情况下维护/更新的状态。

我尝试制作这样的systemConfig文件:

//{{{
function saveCookie(name) { }
//}}}

我认为/希望它会覆盖该函数,即使它在原始源代码中完好无损。如果确实如此,它在TiddlyWiki丢弃一个搞砸了[访问]我们内部网站的能力的cookie之前就不会这样做。我进一步尝试从https://stackoverflow.com/questions/595228/how-can-i-delete-all-cookies-with-javascript插入第一个答案的TiddlyWiki版本。这导致TiddlyWiki冻结。它会引发堆栈溢出警报。

我真的需要帮助,因为我不知道还能做什么,这个问题可能会影响我的组织使用TiddlyWiki。

谢谢,

荷兰

1 个答案:

答案 0 :(得分:3)

我还在TiddlyWiki Google网上论坛(http://groups.google.com/group/tiddlywiki/browse_thread/thread/b33c696a628e4606)上提出了这个问题,并得到了几个答案。

我被指向http://mptw2.tiddlyspot.com/#HijackingHowto,它显示了如何重新定义核心TiddlyWiki函数,例如,在某些条件下改变它们的行为。

大部分内容远远超过我解决这个问题所需要的,但只是看看他们如何重新定义他们的核心功能给了我一个解决方案。

我知道的唯一的JavaScript我在修修补补的过程中捡到了 TiddlyWiki,所以我不完全理解为什么我现在有效 而我以前没有,但这里的代码将完全 杀死cookie(同样,它应该在插件标记的systemConfig中):

 //{{{ 
 window.saveCookie = function(name) { } 
 //}}}

我在想它可能与正在运行的核心TiddlyWiki代码有关 将所有声明的函数分配给window的级别。