小编Ed *_*ick的帖子

如何在ios14中复制IndexedDB“根据用户请求删除数据库”错误?

我正在使用优秀的 ht ​​tps ://www.npmjs.com/package/idb包来管理 Web 应用程序上的简单 indexedDB 实现。

对于大量 iOS 用户,我向我们的错误报告系统报告了此错误“UnknownError:数据库已根据用户的请求删除”,但我在复制时遇到了问题。

到目前为止,它似乎只影响用户:

  • Mobile Safari 14.6、14.4.2,通过 try/catch 捕获
  • Instagram webview,iOS 14.7.1 - 没有被 try/catch 捕获

我认为错误的根源是webkit中的这一行https://github.com/WebKit/WebKit/blob/e98ff129bc8eba06ac17105f19c5f0e142aab853/Source/WebCore/Modules/indexeddb/shared/IDBError.h#L40

这似乎与服务器连接关闭有关。

实现的简化版本:

// ./store.js
import { openDB } from 'idb'

export const upgrade = (db) => {
  if (!db?.createObjectStore) return null
  db.createObjectStore('example_store_name_1')
}

export const set = async (storeName, val, key) => {
  const dbPromise = openDB('example_db_name', 1, { upgrade })
  if (!window.indexedDB) return null
  return (await dbPromise).put(storeName, val, key)
}

export const …
Run Code Online (Sandbox Code Playgroud)

javascript webkit mobile-safari indexeddb

9
推荐指数
0
解决办法
1735
查看次数

PHPUnit如何测试包含check_admin_referer()的Wordpress函数?

我刚开始用Wordpress学习PHPUnit.我有一个插件可以从change.org获取请愿数据.其中一个管理类函数验证来自Wordpress管理区域的设置,并在此验证过程中调用`check_admin_referer().

  public function sc_validate_settings() {
    //check nonce field is valid
    check_admin_referer($this->plugin_name, 'security');    

    //get new settings 
    $settings = $this->sc_clean_new_settings();

    //validate url
    $valid_url = $this->sc_validate_url($settings['petition_url']);

    //validate api_key
    $valid_api_key = $this->sc_validate_api_key($settings['petition_api_key']);

    if ($valid_url && $valid_api_key) {

      $this->clean_settings = $settings;
      return true;

    }

    return false;

  }
Run Code Online (Sandbox Code Playgroud)

如果我注释掉,那么这个PHPUnit测试会通过,check_admin_referer()但如果没有,我就无法通过.

  public function testValidateSettings() {    

    $this->assertTrue($this->plugin_admin->sc_validate_settings());

  }  
Run Code Online (Sandbox Code Playgroud)

我已经尝试手动设置一个nonce,action和_wp_http_referer,并在tests/bootstrap.php和测试类本身中通过wp_nonce_field()via $_POST.我已经阅读了一些关于模拟对象/方法的内容,但是在这个实例中并没有看到它们如何被使用.

我可能完全误解了所有这些是如何工作的,但任何帮助将不胜感激!

php wordpress phpunit

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

标签 统计

indexeddb ×1

javascript ×1

mobile-safari ×1

php ×1

phpunit ×1

webkit ×1

wordpress ×1