gpt4 book ai didi

Dart+Polymer 作为网页/应用程序/扩展程序在 Dart 编辑器之外无法正常工作

转载 作者:行者123 更新时间:2023-12-01 11:38:28 25 4
gpt4 key购买 nike

我在 Dart Editor (Win7Pro64) 中编写了一个 Dart-Polymer 应用程序。一切都在 Dartium 中完美运行,并在 Chrome 中作为 Javascript 运行,但我无法在 IDE 之外加载工作版本。

在 Chrome (36.0.1985.103 beta-m) 中打开 html 文件(只有一个)时,背景图像在那里,但 UI 的其余部分不存在或没有样式(纸张元素似乎不存在)。 Dart/JavaScript 似乎也没有执行。

将其作为解压缩的扩展程序加载到 Chrome(作为应用程序或扩展程序,参见下面的 list )会产生几乎完全相同的结果。 UI 组件都在那里,但没有样式,也没有 Dart/JavaScript 功能。但是,纸波纹效果确实有效,所以可能只是我的脚本没有运行。

以防万一,我不仅尝试了 build/web/ 文件夹,还尝试了 out/web/web/ 文件夹也。

编辑:app.html 将在 Chrome 中成功打开(从 Windows)。但是,当作为 Chrome 应用程序或扩展加载时,我遇到了一大堆错误:http://pastebin.com/KRXnaTXi .由于它们似乎都与 CSP 相关,因此这是第一个:

Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed 
source of script in the following Content Security Policy directive: "default-src
'self' chrome-extension-resource:". Note that 'script-src' was not explicitly set, so
'default-src' is used as a fallback.
observe.js:988
(anonymous function) observe.js:988
(anonymous function) observe.js:992
(anonymous function) wrappers.js:374

/编辑

好的代码:

pubspec.yaml

作为扩展加载时,我使用了 csp: true 并确保构建的 html 文件使用了 *.precompiled.js 脚本。

name: app
description: desc
dependencies:
polymer: ">=0.12.0 <0.13.0"
core_elements: ">=0.1.1 <0.2.0"
paper_elements: ">=0.1.0+2 <0.2.0"
crypto: ">=0.9.0"
cipher: ">=0.7.0 <0.8.0"
lawndart: ">=0.6.5 <0.7.0"
chrome: ">=0.6.0 <0.7.0"
transformers:
- chrome
- polymer:
entry_points:
- web/app.html
csp: false

即使不需要从编辑器(在 Dartium/Chrome 选项卡中)运行应用程序,我也有一个 list 可以将其作为应用程序加载。

list .json

{
"manifest_version": 2,

"name": "app",
"description": "desc",
"version": "0.1.0",

"app": {
"background": {
"scripts": ["background.js"]
}
},

"icons": {
"128": "images/icon128.png",
"48": "images/icon48.png",
"16": "images/icon16.png"
},

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self';"
}

如果作为扩展加载,“app”:部分将被替换为:

"browser_action": {
"default_icon": "images/icon16.png",
"default_popup": "app.html"
},

另一项测试是 build.dart 中的 --deploy 参数。

import 'package:polymer/builder.dart';

main(args) {
build(entryPoints: ['web/grujin.html'],
options: parseOptions(args));
// options: parseOptions(['--deploy']));
}

app.html

<!DOCTYPE html>
<html>
<head>
<!-- <script src='packages/web_components/platform.js'></script>
not necessary anymore with Polymer >= 0.14.0 -->
<script src='packages/web_components/dart_support.js'></script>
<link rel='import' href='packages/paper_elements/paper_input.html'>
<!-- Other imports ... -->
<link rel='stylesheet' href='app.css' shim-shadowdom>
<script src='packages/browser/dart.js'></script>
</head>
<body fullbleed unresolved>
<paper-input id='passwd' label='password'></paper-input>
<!-- ... -->
<script>
document.addEventListener('polymer-ready', function() {
var navicon = document.getElementById('navicon');
var drawerPanel = document.getElementById('drawerPanel');
navicon.addEventListener('click', function() {
drawerPanel.togglePanel();
});
});
</script>
<script type='application/dart' src='app.dart'></script>
</body>
</html>

app.dart

import 'dart:html';
import 'package:polymer/polymer.dart';
import 'package:paper_elements/paper_input.dart';
import 'package:core_elements/core_input.dart';
import 'package:paper_elements/paper_toast.dart';
import 'package:paper_elements/paper_checkbox.dart';
import 'package:paper_elements/paper_button.dart';
import 'package:paper_elements/paper_fab.dart';
import 'package:paper_elements/paper_slider.dart';
import 'package:lawndart/lawndart.dart';

export 'package:polymer/init.dart';

void main() {
initPolymer().run(() {
// code here works most of the time
Polymer.onReady.then((_) {
// some things must wait until onReady callback is called
// for an example look at the discussion linked below

PaperInput passwd = querySelector('#passwd');
InputElement input = passwd.shadowRoot.olderShadowRoot.querySelector('input');
input.type = 'password';
// initialize polymer elements, etc...
});
});
}

最佳答案

我试过了,它在 Dartium (36.0.1985.97 (282401))、Chrome(版本 36.0.1985.125)和 Firefox (30.0) 中看起来不错,但在 Dartium 中作为扩展却不行。我想知道为什么它甚至作为扩展从 web 加载我认为扩展应该只从 app 加载(参见 https://github.com/dart-lang/chromedeveditor/tree/master/ide/app)。

似乎 paper-elements/core-elements 在 Chrome 应用程序中存在已知问题

关于Dart+Polymer 作为网页/应用程序/扩展程序在 Dart 编辑器之外无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24794628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com