我正在尝试使用Google Chrome替代PhantomJS将HTML呈现为PDF.到目前为止,它对我来说一直很好.我唯一的问题是我没有找到任何方法来翻译以下PhantomJS代码:
page.paperSize = {
footer: {
contents: phantom.callback(function(pageNum, numPages) {
return "Power by MyWebsite. Created on "+formatDate(new Date())+"<span style='float:right'>" + pageNum + " / " + numPages + "</span>";
})
}
}
Run Code Online (Sandbox Code Playgroud)
格式化日期与问题中的函数相同如何格式化JavaScript日期
但是,我还没有找到一种方法来在谷歌Chrome中无头复制这种行为.我正在使用来自https://github.com/cyrus-and/chrome-remote-interface的 Chrome远程接口(CDP)
这是我的chrome远程接口代码的概述:
return new Promise(async function (resolve, reject) {
const url = "<MyURL here>";
const [tab] = await Cdp.List()
const client = await Cdp({ host: '127.0.0.1', target: tab });
await Promise.all([
Network.enable(),
Page.enable()
]);
Page.loadEventFired(function () {
setTimeout(function () {
resolve(Page.printToPDF({displayHeaderFooter:true}))); //https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-printToPDF
}, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用docx.js生成Word文档,但我似乎无法让它工作.
在修改第247行以修复"'textAlign'未定义错误"后,我将原始代码复制到Google Chrome控制台中
if (inNode.style && inNode.style.textAlign){..}
Run Code Online (Sandbox Code Playgroud)
这使得该功能convertContent可用.其结果是Object,例如
JSON.stringify( convertContent($('<p>Word!</p>)[0]) )
Run Code Online (Sandbox Code Playgroud)
结果是 -
"{"string":
"<w:body>
<w:p>
<w:r>
<w:t xml:space=\"preserve\">Word!</w:t>
</w:r>
</w:p>
</w:body>"
,"charSpaceCount":5
,"charCount":5,
"pCount":1}"
Run Code Online (Sandbox Code Playgroud)
我复制了
<w:body>
<w:p>
<w:r>
<w:t xml:space="preserve">Word!</w:t>
</w:r>
</w:p>
</w:body>
Run Code Online (Sandbox Code Playgroud)
进入Notepad ++并将其保存为扩展名为"docx"的文件,但是当我在MS Word中打开它但是它说"由于内容存在问题而无法打开".
我错过了一些属性或XML标签或其他什么?
这是我在HTML中输入的代码
<iframe width="640" height="360" src="https://www.youtube.com/watch?v=ZwKhufmMxko">
</iframe>
Run Code Online (Sandbox Code Playgroud)
视频帧会显示,但实际视频不会加载甚至显示.我试过等待,所以它不应该是一个加载问题.
我目前也只使用HTML和CSS
关于如何让这个工作的任何想法?
我们最近迁移到了PHP-FPM.但是我们遇到了一些长时间运行的脚本的问题.代码看起来大致如下:
foreach ($items as $item) {
set_time_limit(30);
proccessThatTakesAround2secs();
}
Run Code Online (Sandbox Code Playgroud)
正常的PHP脚本时间限制也是30秒.之前工作正常,因为我们将每个项目的剩余时间限制重新设置为30秒.大约有1000个项目,这意味着该脚本通常需要大约30分钟才能完成.但是我们已经达到了以下问题:
FastCGI:comm与服务器"/usr/local/php-5.6.24/sbin/php5-fpm"中止:空闲超时(30秒)
现在我的问题是,将空闲超时增加到一个小时是否明智但仍然确保PHP脚本运行时间不超过30秒,除非我们使用set_time_limit?有没有办法在每个脚本的基础上设置空闲超时(类似于set_time_limit?)
这是我们的池配置:
[www]
user = www-data
group = www-data
listen = /var/run/php5-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = static
pm.max_children = 55
pm.max_requests = 10000
php_value[memory_limit] = 128M
php_value[max_execution_time] = 30
php_value[upload_max_filesize] = 20M
php_value[post_max_size] = 20M
php_value[max_input_vars] = 9999
Run Code Online (Sandbox Code Playgroud)
这是我们的fastcgi.conf
<IfModule mod_fastcgi.c>
AddType application/x-httpd-fastphp5 .php
Action application/x-httpd-fastphp5 /php5-fcgi
Alias /php5-fcgi /usr/local/php-5.6.24/sbin/php5-fpm
FastCgiExternalServer /usr/local/php-5.6.24/sbin/php5-fpm -socket /var/run/php5-fpm.sock -idle-timeout 30 -pass-header Authorization
<Directory /usr/local/php-5.6.24/sbin/>
Require …Run Code Online (Sandbox Code Playgroud) 我正在使用Laravel中提供的基本HTTP身份验证登录我的网站.但是,当我打电话时,即使我已登录,Auth::Check()我总是得到错误的回复.
难道Auth::Check()不符合基本的身份验证模式工作,如果没有,有没有什么办法来检查基本身份验证,看是否有用户登录?
这是我的用户类:
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'email', 'password',
];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function getRememberToken()
{
return $this->remember_token;
}
public function setRememberToken($value)
{
$this->remember_token = $value;
}
public function getRememberTokenName() …Run Code Online (Sandbox Code Playgroud) 我在模态中使用 Select2 但它工作得不太正常,正如您在此处看到的: https: //gyazo.com/a1f4eb91c7d6d8a3730bfb3ca610cde6
结果显示在模式后面。我怎样才能解决这个问题?我读过类似的帖子,但都在谈论删除 tabindex,这是我的代码中没有的东西,所以我不知道如何修复它。这是我的代码:
<div class="remodal shadow" data-remodal-id="keuze" data-remodal-options="closeOnOutsideClick: false">
<button data-remodal-action="close" class="remodal-close"></button>
<div class="panel-header">Kies uw type logboek</div>
<div class="modal-body">
<select id="select" class="searchselectstyle select2"></select>
<button data-remodal-action="cancel" class="remodal-cancel mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect cancel">Cancel</button>
<button data-remodal-action="confirm" class="remodal-confirm mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect send">Aanmaken</button>
</div>
</div>
<script type="text/javascript">
token = '{{csrf_token()}}';
$(document).ready(function() {
$('#select').select2({
ajax: {
type: "POST",
url: "ajax/getlogtypes",
dataType: 'json',
data: function (params) {
return {
q: params.term, // search term
page: params.page,
'_token' : token
};
},
escapeMarkup: …Run Code Online (Sandbox Code Playgroud) 下面的代码给了我在PHP 7中的致命错误
$jquery_click_hook = ereg_replace("[^A-Za-z0-9]", "", strtolower($value['name']));
Run Code Online (Sandbox Code Playgroud)
有没有办法让它与PHP 7兼容?
在命名权限方面,我应该遵循一些命名准则吗?现在,我找到的所有内容都类似于“添加 Foo”、“编辑 Foo”、“删除 Foo”、“添加 FooBar”、“编辑 FooBar”、“删除 FooBar”等等。
请记住,没有分组(这真是遗憾),并且当您有所有上述权限的管理屏幕时 - 上述方法似乎相当草率。
您所有的“添加”都在一起,“编辑”都在一起,等等,例如:
- Add Foo
- Add FooBar
- Add FooBarBez
- Edit Foo
- Edit FooBar
- Edit FooBarBez
- Delete Foo
- Delete FooBar
- Delete FooBarBez
Run Code Online (Sandbox Code Playgroud)
现在我倾向于类似于路线名称的东西,例如:
- foo.add
- foo.edit
- foo.delete
- foobar.add
- foobar.edit
- foobar.delete
- foobarbez.add
- foobarbez.edit
- foobarbez.delete
Run Code Online (Sandbox Code Playgroud)
它在将所有“父”权限保持在一起方面更有组织性(即:所有 Foo 在一起,所有 FooBar 在一起,等等)。当然,如果有实际的指导方针,请告诉我,或者您有其他有价值的意见/建议吗?
//为了清晰起见编辑更新
具体来说,
- __Are__ any naming conventions?
- Are there any preferences in terms of use of singular/plural …Run Code Online (Sandbox Code Playgroud) naming-conventions user-permissions laravel laravel-5 laravel-permission
我有以下路线:
Route::get('echo',function (Request $req) {
return response()->stream(function () use ($req) {
echo json_encode($req->all());
}, 200, [
'Content-Type' => 'application/json'
]);
})->name('echo');
Run Code Online (Sandbox Code Playgroud)
为了简单起见,我们假设它是一个简单的回声响应。实际上,这是一个非常大的文件。两种情况下的结果都是一样的。
现在我想测试这条路线,看看我是否确实可以看到那个 json 内容,所以我试过这个:
public function testBasicTest()
{
$response = $this->get(route('echo', [
"content"=>"some content"
]));
$response->assertSeeText("some content"); //Doesn't work
$response->assertJson( [
"content"=>"some content"
]); //Neither does this
}
Run Code Online (Sandbox Code Playgroud)
我进一步检查了它,这似乎是因为 (a) 响应被包裹 a TestResponse(b) 响应内容从不流式传输和 (c) 即使响应内容将通过$response->baseResponse->sendContent()实际内容强制流式传输被回显而不是被实际捕获TestResponse
此外调用$response->getContent()不起作用,因为它似乎直接调用StreamedResponse::getContent()硬编码的 return false。
我使用以下方法取得了一些有限的成功:
ob_start();
$response->sendContent();
$result = ob_get_clean();
Run Code Online (Sandbox Code Playgroud)
然而,这在单元测试中看起来是一件非常草率的事情。
有没有其他人遇到过这种情况?是否可以测试流式响应的内容?
我正在尝试将通用函数绑定到特定的上下文和参数,但是我似乎无法找出正确的方法来做到这一点。
这是我的代码:
interface A {}
interface Repository<T> {
save(item: T): boolean;
}
const updater = <T>(repo: Repository<T>, item: T) => {
// do things and update
};
const items: A[] = [];
const repo: Repository<A> = {
save(item: A) {
/* do things */
return true;
}
}
items.forEach(updater<A>.bind(null, repo)); // Line with issue
Run Code Online (Sandbox Code Playgroud)
这里的想法是有一个通用函数,它将存储库作为第一个参数,当绑定时将创建一个适合在 forEach 中使用的函数。但是我得到了像( expected和这样的错误cannot find name 'bind'
我不完全确定我的语法是否有问题,或者我遗漏了什么。
我也试过:
updater.bind(null, repo)
Run Code Online (Sandbox Code Playgroud)
但是这不适用于 3.2 选项,strictBindCallApply因为它假定类型参数T={}
有谁知道正确的方法来做到这一点?
php ×4
javascript ×3
laravel ×3
ajax ×1
apache ×1
css ×1
docx ×1
ereg-replace ×1
generics ×1
html ×1
iframe ×1
jquery ×1
laravel-5 ×1
mod-fastcgi ×1
ms-word ×1
php-7 ×1
phpunit ×1
typescript ×1
youtube ×1