小编gpm*_*dam的帖子

为什么使用HTMLObjectElement动态生成SVG会导致跨源错误?

请考虑以下JavaScript代码段:

const app = document.getElementById('root');
const svg = `<svg version="1.1" id="Layer_1"...`;
const obj = document.createElement('object');

obj.setAttribute('type', 'image/svg+xml');
obj.setAttribute('data', `data:image/svg+xml; base64,${btoa(svg)}`);

app.appendChild(obj);

setTimeout(() => {
  console.log(obj.contentDocument.querySelector('svg'));
}, 1500);
Run Code Online (Sandbox Code Playgroud)

(有关完整示例,请参阅此JSFiddle)

运行时,控制台(Google Chrome)中会出现以下错误:

未捕获的DOMException:无法从'HTMLObjectElement'读取'contentDocument'属性:阻止具有源" https://fiddle.jshell.net " 的帧访问跨源帧.at setTimeout(https://fiddle.jshell.net/_display:77:19)

考虑到这一点;

  1. 当尝试访问contentDocument完全动态创建的对象而没有外部资源时,为什么这被视为跨源请求?

  2. 有没有办法以这种方式动态生成SVG,而不会冒犯浏览器的跨源策略?

html javascript dom cors

18
推荐指数
1
解决办法
628
查看次数

管理jQuery插件

通常,在使用jQuery时,需要包含多个插件.这很快就会变得混乱,特别是当一些插件需要额外的组件(图像和CSS文件)时.

有哪些"推荐"方式:

  • 一个.管理所需的文件/组件(.js,.css的方式,易于维护和图像),和;
  • 将这些插件包更新到最新版本

我不一定在寻找一种工具来做到这一点(尽管我认为可以执行这种管理的工具很有用),但更多的是一种思考方式.

javascript jquery organization jquery-plugins

16
推荐指数
1
解决办法
2425
查看次数

在Laravel's Eloquent中更新一对多关系

假设我在Laravel的Eloquent中有以下两个模型之间的关系:

<?php

    // user:
    // - user_id
    class User extends Model
    {
        protected $table = 'users';

        public function settings()
        {
            return $this->hasMany('Setting');
        }

        public function settingSet($key, $value)
        {
            \Setting::setConfigItem($key, $value, $this->user_id);
        }

    }

    // settting:
    // - setting_key
    // - setting_value
    // - user_id
    class Setting extends Model
    {
        public function setConfigItem($key, $value, $user_id)
        {
            // Note: I've provided this code here as an example, so it should
            // exist here only as pseudo-code - it has not been tested …
Run Code Online (Sandbox Code Playgroud)

php laravel eloquent laravel-5

7
推荐指数
1
解决办法
1477
查看次数

在独立字典应用程序中包含大单词列表

应用程序
我正在研究一个简单的字典搜索工具,其主要目的是搜索大约180,000个单词的单词列表.

首先,单词列表是一个纯文本文档,每个单词都在一行上.加载后,单词列表被处理成一个简单的数组进行搜索.

目标
我的目标是将应用程序分发为单个可移植的可执行文件,因此我必须以某种方式将单词列表打包在应用程序中.

我的尝试
在我第一次尝试时,我只是自动生成一个数组定义,并将其包含在项目中(因此,不是加载文件和创建数组,我在项目中有一个文字数组),看起来有点像这样:

// Auto-generated word-list
public string[] WordList = new string[178691];

WordList[0] = "AA";
WordList[1] = "AAH";
// ...
WordList[115383] = "PHOTONEGATIVE";
WordList[115384] = "PHOTONIC";
WordList[115385] = "PHOTONICS";
WordList[115386] = "PHOTONS";
WordList[115387] = "PHOTONUCLEAR";
WordList[115388] = "PHOTOOXIDATION";
WordList[115389] = "PHOTOOXIDATIONS";
WordList[115390] = "PHOTOOXIDATIVE";
WordList[115391] = "PHOTOOXIDIZE";
WordList[115392] = "PHOTOOXIDIZED";
WordList[115393] = "PHOTOOXIDIZES";
WordList[115394] = "PHOTOOXIDIZING";
WordList[115395] = "PHOTOPERIOD";
// etc...
Run Code Online (Sandbox Code Playgroud)

这实现了完全可移植的目标,整个项目的文件大小保持不变.

然而,通过以这种方式接近它而改变的一件事是构建和运行时间的增加,这可以被认为是一个小的和不可避免的问题,但理想情况下应该缩短.

问题
是否有任何方法可以将大型(~180,000字)字典组合到便携式/独立应用程序中,可能使用某种压缩技术来降低文件大小,但最终要保持合理的加载时间,这是比一个简单的,预定义的文字数组"更受青睐"?

c# compression portability dictionary

0
推荐指数
1
解决办法
434
查看次数