我有一个服务工作者,offline.html如果客户端没有网络连接,它应该缓存显示的页面.但是,它有时会认为导航器即使不是离线也是脱机的.就是这样navigator.onLine === false.这意味着offline.html即使在线,用户也可以获得而不是实际内容,这显然是我想避免的.
这是我在我的注册服务工作者的方式main.js:
// Install service worker for offline use and caching
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/service-worker.js', {scope: '/'});
}
Run Code Online (Sandbox Code Playgroud)
我目前service-worker.js:
const OFFLINE_URL = '/mysite/offline';
const CACHE_NAME = 'mysite-static-v1';
self.addEventListener('install', (event) => {
event.waitUntil(
// Cache the offline page when installing the service worker
fetch(OFFLINE_URL, { credentials: 'include' }).then(response =>
caches.open(CACHE_NAME).then(cache => cache.put(OFFLINE_URL, response)),
),
);
});
self.addEventListener('fetch', (event) => {
const requestURL = new URL(event.request.url);
if (requestURL.origin …Run Code Online (Sandbox Code Playgroud) 我想显示一小段文字,可以包裹两三行.它是一个高度可视化的元素,为了造型目的,我希望线条的长度尽可能相等,更喜欢一条线而不是两条线.
而不是这个:
这是一个将包装为两个文本的示例
线.
我要这个:
这是一块的例子
将包装为两行的文本.
但我不想限制文本容器的宽度:
这篇文章足够长,几乎不适合两行.它
不应该包裹三行或更多行,因此没有宽度限制.
有没有办法在纯CSS或可容忍的JavaScript中执行此操作?
我在实验新的CSS网格布局系统中codepen.io.它有一个名为网格线的有趣功能,允许为列和行之间的网格线定义自定义名称.不幸的是,我似乎无法使该功能起作用,因为SCSS不赞同[line-name]语法.
#container.named {
grid-template-columns: [main-start] 100px [content-start] 1fr [content-end] 100px [main-end]; // Will not pass SCSS validation :(
.one {
grid-column: content-start / content-end;
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码应该创建一个CSS网格,其两侧有两个100px宽的列,其中一列填充了中心元素宽度的其余部分.这部分工作正常.然后我尝试给网格线自定义名称并将.one元素放在中间列,但Codepen的SCSS预处理器(以及我尝试的所有其他编译器)拒绝编译整个事情,说Invalid CSS after "...plate-columns: ": expected expression (e.g. 1px, bold), was "[main-start] 10..."
有没有办法迫使SCSS按原样编译这个样式而不解析它(或用另一种编译方式表达)或者我是否必须用常规CSS重写我的实验?
在Symfony 2中是否有一种非常好,干净且简单的方法来非破坏性地删除实体?我想让我的管理员有机会取消删除项目,同时尽可能少地牺牲框架提供的自动化.
如果没有内置解决方案或第三方软件包来帮助我,那么最好的方法是什么?向deleted实体添加属性需要大量添加逻辑,以防止它们混乱创建的控制器doctrine:generate:crud,所以它们可能应该以序列化形式存储在单独的表中?
我们的gulp构建需要使用bower安装一堆库,然后将它们与我们分布在多个目录中的所有代码连接起来.这是它的样子:
var jsFiles = [
sourcePath + '/config/config.js',
sourcePath + '/vendor/jquery/dist/jquery.js',
sourcePath + '/vendor/js-cookie/src/js.cookie.js',
sourcePath + '/vendor/modernizr/modernizr.js',
sourcePath + '/vendor/lodash/lodash.js',
sourcePath + '/vendor/picturefill/dist/picturefill.min.js',
sourcePath + '/templates/**/*.js',
sourcePath + '/pages/**/*.js'
],
gulp.task('build:js', ['jscs'], function() {
return gulp.src(jsFiles)
.pipe(concat('scripts.js'))
.pipe(gulpif(isProd, uglify()))
.pipe(gulp.dest(outputPath + '/webresources/js'));
});
Run Code Online (Sandbox Code Playgroud)
我们的问题是,每当有人添加新库时,如果其他开发人员没有运行bower install以获取新组件,则会遇到问题.该scripts.js地没有他们建,因为它不会介意的水珠之一返回空,即使它是一个命名的文件.
该如何解决?如果glob返回零结果,有没有办法抛出错误?
我正在尝试为一个非常大(约2千兆字节)的Web应用程序创建一个HTML5应用程序缓存,该应用程序将在Windows 8 Professional平板电脑和IE10内部使用.有些事情导致缓存过程失败,但我能找到的唯一调试信息是F12控制台,它只是说"AppCache致命错误".
我做了一个错误处理程序并尝试调试:
if (window.applicationCache)
{
var oAppCache = window.applicationCache;
oAppCache.onerror = function(e) {
alert(e); // Outputs [object Event], I use this row as a breakpoint target
};
}
Run Code Online (Sandbox Code Playgroud)
但是,e使用调试器查看时,不包含任何有用的信息.
根据Web服务器日志,错误之前请求的最后一个文件是JPEG,就像许多其他文件一样.我应该从哪里开始寻找导致错误的原因的线索?该页面缓存在Firefox上很好.
我在发送带有长行文本的HTML电子邮件时遇到问题.网站上使用的WYSIWYG编辑器(FCKEditor 2.5)不断删除\n某些浏览器上的所有字符,包括IE和Chrome.结果是一封包含大量文本的电子邮件.如果不是电子邮件客户端通过插入包装超过998个字符的行,这不会是一个问题! \n.当然,这些几乎总是在最不幸的地方,打破HTML标签,并在内容本身看起来讨厌.
我最初的解决方案是在每个HTML标记后或每900到990个字符后添加换行符.这是我最终得到的正则表达式:
return preg_replace("/(<\/[^\>]+>|<[^\>]+\/>|>[^<]{900,990}\s)(\n)*/","$1\n",$str);
Run Code Online (Sandbox Code Playgroud)
但是,当存在根本不包含任何标记的行时,永远不会触发空白匹配部分.但是,如果我>从它开始删除它,它会开始打破标签.
有没有比正则表达式更好的方法来做到这一点,或者这个正则表达式能够愈合吗?
编辑: 1000字符行长度限制在RFC 821中定义.
我在尝试激活StofDoctrineExtensionsBundle中的SoftDeleteable过滤器时遇到问题.我按照手册中的描述进行了配置:
# app/config/config.yml
doctrine:
orm:
entity_managers:
default:
filters:
softdeleteable:
class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter
enabled: true
Run Code Online (Sandbox Code Playgroud)
但这就是我得到的:
[Symfony\Component\Config\Definition\Exception\InvalidConfigurationException]
Unrecognized options "filters" under "doctrine.orm.entity_managers.default"
Run Code Online (Sandbox Code Playgroud)
跑步bin/vendors update没有帮助.可能有什么不对?
我们有一个系统,管理员和标准用户由他们自己独立的安全提供商处理.这导致管理页面出现问题,因为管理员无法访问主站点防火墙后面的任何文件或图像,除非他们也登录到主站点.
无论提供商如何,所有经过身份验证的用户和管理员都需要可以访问这些图像和文件.它们通过控制器提供,该控制器提供更细粒度的访问控制.
是否可以定义多个提供商以允许访问路由?
这是我们当前security.yml的精简版:
security:
providers:
admin_user_db:
entity: { class: OurAdminUserBundle:AdminUser, property: username }
site_user_db:
entity: { class: OurSiteUserBundle:SiteUser, property: username }
firewalls:
admin_login:
pattern: ^/admin/login$
security: false
site_user_login:
pattern: ^/login
security: false
file_route:
pattern: ^/file
anonymous: ~
### We need to allow this route only for authorized users from
### either admin_user_db or site_user_db providers
admin_secured_area:
pattern: ^/admin
http_basic: ~
provider: admin_user_db
form_login:
check_path: /admin/login_check
login_path: /admin/login
logout:
path: /admin/logout
target: /
site_secured_area:
pattern: .*
http_basic: ~
provider: site_user_db …Run Code Online (Sandbox Code Playgroud) 在HTML模板中意外使用CSS选择器之后,我开始想知道是否存在允许这种语法的模板语言或扩展名,以及它是否有用.所以不要写这个:
<div id="mydiv">
<div class="first column">1</div>
<div class="second column">2</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我们可以这样写:
<div#mydiv>
<div.first.column>1</div>
<div.second.column>2</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这样的事情存在吗?
我一直在使用MBRWithin功能很多次.突然我注意到谷歌地图这POINT(101.11857 4.34475)是我指定的地理围栏,但它仍然在mysql中给出值1任何原因或需要调整?
SELECT MBRWithin(GeomFromText('POINT(101.11857 4.34475)'),GeomFromText('POLYGON((101.12112522125244 4.3531723687957164,101.11846446990967 4.351417913665312,101.13138198852539 4.336397898951581,101.13477230072021 4.33211863778494,101.14065170288086 4.321933898868271,101.14992141723633 4.306699328215635,101.15455627441406 4.30978050198082,101.1397933959961 4.334600612212089,101.12112522125244 4.3531723687957164,101.12112522125244 4.3531723687957164))')) As geoFenceStatus
我们在Symfony2项目中从控制器调用某个自定义实体存储库函数时遇到问题.我们之前已经成功地与其他实体一起完成了它,所以我们可能会遗漏一些东西而且我无法弄清楚它可能是什么.
我们的存储库类如下所示:
<?php
namespace OurSite\Bundle\OurBundle\Entity;
use Doctrine\ORM\EntityRepository;
class BlogRepository extends EntityRepository
{
public function findPreviousPosts($limit = 6)
{
$q = $this->createQueryBuilder('q')
->where('q.category = :category')
->setMaxResults($limit)
->add('orderBy', 'q.published ASC')
->getQuery();
$res = $q->getResult();
return $res;
}
}
Run Code Online (Sandbox Code Playgroud)
实体:
<?php
namespace OurSite\Bundle\OurBundle\Entity;
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
/**
* OurSite\Bundle\OurBundle\Entity\Blog
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="OurSite\Bundle\OurBundle\Entity\BlogRepository")
*/
class Blog {
// Non-relevant stuff here
}
Run Code Online (Sandbox Code Playgroud)
当我们调用这样的方法时:
$em = $this->getDoctrine()->getEntityManager();
$previousPosts = $em->getRepository('OurSiteOurBundle:Blog')->findPreviousPosts();
Run Code Online (Sandbox Code Playgroud)
我们得到这个:
Undefined method 'findPreviousPosts'. The method name must …Run Code Online (Sandbox Code Playgroud) javascript ×4
symfony ×4
css ×3
doctrine-orm ×2
html ×2
orm ×2
php ×2
bower ×1
css-grid ×1
debugging ×1
email ×1
es6-promise ×1
geospatial ×1
gulp ×1
mysql ×1
node-glob ×1
offline ×1
promise ×1
regex ×1
sass ×1
url-routing ×1