请考虑以下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)
考虑到这一点;
当尝试访问contentDocument完全动态创建的对象而没有外部资源时,为什么这被视为跨源请求?
有没有办法以这种方式动态生成SVG,而不会冒犯浏览器的跨源策略?
通常,在使用jQuery时,需要包含多个插件.这很快就会变得混乱,特别是当一些插件需要额外的组件(图像和CSS文件)时.
有哪些"推荐"方式:
.js,.css的方式,易于维护和图像),和;我不一定在寻找一种工具来做到这一点(尽管我认为可以执行这种管理的工具很有用),但更多的是一种思考方式.
假设我在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) 应用程序
我正在研究一个简单的字典搜索工具,其主要目的是搜索大约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字)字典组合到便携式/独立应用程序中,可能使用某种压缩技术来降低文件大小,但最终要保持合理的加载时间,这是比一个简单的,预定义的文字数组"更受青睐"?
javascript ×2
c# ×1
compression ×1
cors ×1
dictionary ×1
dom ×1
eloquent ×1
html ×1
jquery ×1
laravel ×1
laravel-5 ×1
organization ×1
php ×1
portability ×1