全部。我已经开始使用 Chrome 的各种 API 开发小型扩展程序,尽管一切正常,但我仍然对一些事情感到好奇。
两个问题,如果你们不介意帮我解决的话:
1. 谁能告诉我 chrome.storage.local 的持久性限制是什么?我已经自己尝试过各种测试,例如使用 chrome.storage.local.set() 存储一些东西,清除我所有的浏览器历史记录、cookie 等,然后查看是否一切都还在那里。通常它还会在那里,但有时我稍后再回来查看它就会消失。总的来说,我一直无法明确标记我正在做的事情,即偶尔清除 .local 数据。
2. 到目前为止,我主要使用 chrome.storage.sync,同时没有使用 Chrome 的“登录 Chrome”功能登录。我在 API 页面上读到,如果 .sync 在 Chrome 离线时使用(以及未登录,我假设,这是我的情况),数据存储在本地,然后稍后同步。我主要担心的是,这是否意味着我使用 chrome.storage.sync 存储的数据可能会被删除,因为我使用 chrome.storage.local 存储的数据过去已经存在?无论如何,我一直在使用 .sync 的主要原因之一是因为我从未有过用它删除数据的经历,而我有过使用 .local 的经历(如我在 #1 中所述)。
非常感谢!请帮帮我!
编辑:我很确定 .local clear 没有发生,因为我错误地删除了扩展名,然后又将其重新添加进去。我知道 that将清除 .local 数据(但保留 .sync)。
最佳答案
我是该 API 的作者。
chrome.storage.local 不应该消失,除非在卸载时(这听起来像你的情况)或者在极少数情况下在数据库损坏时消失(我们已经看到这种情况特别发生在系统还原时)。
chrome.storage.sync 的工作方式相同,不同之处在于它使用的合并算法如果 2 台机器进行冲突更改可能会导致数据丢失。在您的情况下,如果您登录到使用 chrome.storage.sync 的机器,则可能会发生这种情况。更常见的原因是一台机器在进行更改时处于离线状态,或者用户可能设法同时更改了 2 台机器上的数据(这就是为什么建议仅在用户操作时更改数据——我们应该记录这一点)。
对于它的值(value)——我们也应该记录这一点——合并算法是 last-change-wins 和 sync-is-source-of-truth——但是添加的任何本地键/值对都不会删除。如果你有:
{a:1, b:2} 在计算机 A 上(登录并同步), {b:3, c:4} 在计算机 B 上(未登录),
并且计算机 B 登录,在完成完全同步后,A 和 B 上的存储状态最终将在 {a:1, b:2, c:4} 因为 A 的数据已经是同步的一部分,这真相的来源,但 'c' 还不存在,所以被添加了。
在这种情况下,A 将获得一个添加“c”的 onChange 事件,B 将获得一个添加“a”并将“b”从 3 更新为 2 的 onChange 事件。
关于javascript - Chrome.Storage.Local 持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23210499/
对于Rails模型,是否可以/建议让一个类的成员不持久保存到数据库中?我想将用户最后选择的类型存储在session变量中。由于我无法从我的模型中设置session变量,我想将值存储在一个“虚拟”类成员中,该成员只是将值传递回Controller。你能有这样的类(class)成员吗? 最佳答案 将非持久属性添加到Rails模型就像任何其他Ruby类一样:classUser扩展解释:在Ruby中,所有实例变量都是私有(private)的,不需要在赋值前定义。attr_accessor创建一个setter和getter方法:classUs
我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的
我将Cucumber与Ruby结合使用。通过Selenium-Webdriver在Chrome中运行测试时,我想将下载位置更改为测试文件夹而不是用户下载文件夹。我当前的chrome驱动程序是这样设置的:Capybara.default_driver=:seleniumCapybara.register_driver:seleniumdo|app|Capybara::Selenium::Driver.new(app,:browser=>:chrome,desired_capabilities:{'chromeOptions'=>{'args'=>%w{window-size=1920,1
我有这个:AccountSummary我想单击该链接,但在使用link_to时出现错误。我试过:bot.click(page.link_with(:href=>/menu_home/))bot.click(page.link_with(:class=>'top_level_active'))bot.click(page.link_with(:href=>/AccountSummary/))我得到的错误是:NoMethodError:nil:NilClass的未定义方法“[]” 最佳答案 那是一个javascript链接。Mechan
在我的mac上安装几个东西时遇到这个问题,我认为这个问题来自将我的豹子升级到雪豹。我认为这个问题也与macports有关。/usr/local/lib/libz.1.dylib,filewasbuiltfori386whichisnotthearchitecturebeinglinked(x86_64)有什么想法吗?更新更具体地说,这发生在安装nokogirigem时日志看起来像:xslt_stylesheet.c:127:warning:passingargument1of‘Nokogiri_wrap_xml_document’withdifferentwidthduetoproto
有一段时间这似乎是一个闪烁的错误,但现在它一直出现:当我在一个相当简单的ApplicationHelper规范上运行RSpec时,我得到以下错误:%rspec--backtrace1)ApplicationHelperrendersMarkdownfromplaintextFailure/Error:expect(helper.md(plaintext)).toeq("Header\n")NameError:undefinedlocalvariableormethod`helper'for##/Users/danielsh/.rvm/gems/ruby-2.1.1@project-st
我看到有关未找到文件min.map的错误消息:GETjQuery'sjquery-1.10.2.min.mapistriggeringa404(NotFound)截图这是从哪里来的? 最佳答案 如果ChromeDevTools报告.map文件的404(可能是jquery-1.10.2.min.map、jquery.min.map或jquery-2.0.3.min.map,但任何事情都可能发生)首先要知道的是,这仅在使用DevTools时才会请求。您的用户不会遇到此404。现在您可以修复此问题或禁用sourcemap功能。修复:获取文
是否有chrome开关来抑制“外部协议(protocol)请求”?我正在使用selenium-ruby-watirwebdriver自动化应用程序。我在网上搜索了绕过此窗口和对话的解决方案:http://productforums.google.com/forum/#!topic/chrome/K22hXwRy6zQ概述了我们如何手动执行此操作。但是对于Selenium-Chrome-Ruby,我需要通过可能设置一个chrome开关(chorme开关列表:=http://src.chromium.org/svn/trunk/src/chrome/common/chrome_swit
我使用的是最新版本的Chrome(32.0.1700.107)和Chrome驱动程序(V2.8)。但是当我在Ruby中使用以下代码运行示例测试时:require'selenium-webdriver'WAIT=Selenium::WebDriver::Wait.new(timeout:100)$driver=Selenium::WebDriver.for:chrome$driver.manage.window.maximize$driver.navigate.to'https://www.google.co.in'defapps_hoverele_hover=$driver.find_
当使用rubyselenium驱动程序驱动chrome时,我得到/home/travis/.rvm/gems/ruby-2.6.2/gems/selenium-webdriver-3.141.5926/lib/selenium/webdriver/remote/response.rb:72:in`assert_ok':sessionnot创建:Chrome版本必须在70和73之间(Selenium::WebDriver::Error::SessionNotCreatedError)如何解决这个问题?降级chrome不是我想做的事。 最佳答案