小编van*_*ert的帖子

如何处理?_escaped_fragment_ =用于AJAX抓取工具?

我正在努力使基于AJAX的网站对SEO友好.正如在网络上的教程中所建议的那样,我href为链接添加了"漂亮" 属性:<a href="#!site=contact" data-id="contact" class="navlink">???????</a>并且,在默认情况下内容加载了AJAX的div中,爬虫的PHP脚本:

$files = glob('./pages/*.php'); 

foreach ($files as &$file) {
    $file = substr($file, 8, -4); 

}

if (isset($_GET['site'])) {
    if (in_array($_GET['site'], $files)) {
        include ("./pages/".$_GET['site'].".php");
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一种感觉,一开始我需要另外切割_escaped_fragment_=部分,(...)/index.php?_escaped_fragment_=site=about因为否则脚本将无法从URL中GET获取site值,我是对的吗?

但是,无论如何,我如何知道爬虫将漂亮的链接(那些#!)转换为丑陋的链接(包含?_escaped_fragment_=)?我被告知它会自动发生,我不需要提供这种映射,但是Googlebot的抓取并没有向我提供有关URL发生的任何信息.

php ajax seo

6
推荐指数
1
解决办法
1万
查看次数

使用带有$变量的calc()时出现意外的术语

我使用postcss-precss(模拟大多数Sass功能,但不是数学)与postcss-cssnext相结合(提供最新的原生CSS功能,即我在postcss-precss中缺少的calc()).

通常我会通过插值结合萨斯和calc()$vars#{}:

$size-width-search-btn: 40px;
.btn--search {
    width: calc(#{$size-width-search-btn} + 5); // is compiled to: width: calc(#{$size-width-search-btn} + 5); 
}
Run Code Online (Sandbox Code Playgroud)

但是postcss-precss似乎并没有支持这种插值 - 它根本就没有被过滤.然而,好消息是它没有插值:

width: calc($size-width-search-btn + 5); // is compiled to: 45px
Run Code Online (Sandbox Code Playgroud)

但后来我的IDE(PhpStorm 2016.3)无法识别这种语法,我得到了这个令人恼火的亮点:

在此输入图像描述

尽管这种语法是正确的.

我不能指望cssnext会开始支持插值变量(因为它无论如何都是一个糟糕的黑客),我宁愿让WebStorm/PhpStorm用calc()和$ vars识别简化语法:

calc($var1 + $var2)
Run Code Online (Sandbox Code Playgroud)

但怎么样?

我不能使用postcss-sass,因为这个加载器的源映射被破坏了.我也不想将.scss更改为.pcss,因为JetBrain的PostCSS插件仍然不支持某些Sass功能(如$ variables或内联注释).

css sass phpstorm webstorm postcss

6
推荐指数
1
解决办法
835
查看次数

如何将道具传递给组件的故事?

我想使用Storybookvue-select组件添加一些故事,但我正在努力处理更复杂的情况,包括传递道具或方法.

当我在模板中传递道具时,它可以工作:

storiesOf('VSelect', module)
.add('with labeled custom options', () => ({
        components: {VSelect},
        template:   `<v-select :options='[{value: "CA", label: "Canada"}, {value: "UK", label: "United Kingdom"}]' />`
    }))
Run Code Online (Sandbox Code Playgroud)

我发现它不太可读,所以我想将它们作为道具或数据单独传递:

.add('with labeled custom options as props', () => ({
        components: {VSelect},
        props:      {options: [{value: "CA", label: "Canada"}, {value: "UK", label: "United Kingdom"}]},
        data:       {options: [{value: "CA", label: "Canada"}, {value: "UK", label: "United Kingdom"}]},
        template:   `<v-select />`
    }))
Run Code Online (Sandbox Code Playgroud)

但它们既没有data,也props没有被故事书所认可 - …

javascript vue.js storybook

6
推荐指数
1
解决办法
4197
查看次数

git:将rep推送到ftp时,“行长度错误:Shel”

我输入

git push --set-upstream ssh://antyusos@ftp.anty-usos.host-ed.me/projekt.git master
Run Code Online (Sandbox Code Playgroud)

cmd返回:

antyusos@ftp.anty-usos.host-ed.me的密码:[此处输入正确的密码]
致命:协议错误:行长错误字符:Shel

我究竟做错了什么?

git ftp

5
推荐指数
1
解决办法
1534
查看次数

如何删除Stripe的iframe?

我在内部单页应用程序上使用带有vue-stripe-elements-plus的Stripe Elements。由于用户离开更改信用卡模块后无需保持条带代码运行,因此我想完全卸载Stripe,但这似乎不那么容易。

在将其卸载到组件的destroyed挂钩中并删除添加的iframe后:

destroyed () {
        this.$unloadScript('https://js.stripe.com/v3/');
        //delete window.Stripe; // commented because this makes stripe add iframes twice

        let stripeIframes = [
            document.querySelectorAll('[name^=__privateStripeMetricsController]'),
            document.querySelectorAll('[name^=__privateStripeController]'),
        ];

        stripeIframes.forEach(iframes => iframes.forEach(iframe => {
             iframe.parentNode.removeChild(iframe);
        }));
},
Run Code Online (Sandbox Code Playgroud)

Stripe添加的iframe:

在此处输入图片说明

一段时间后(其中一个)再次出现:

在此处输入图片说明

看起来像iframe是由Stripe的侦听器重新创建的,这些侦听器在发生消息事件时已附加到窗口对象。我无法删除此侦听器,因为处理程序函数位于iframe内的iframe中,因此浏览器不允许我访问其内部。

而且,此侦听器发出不需要的条纹请求:

XHR finished loading: POST "https://m.stripe.com/4".
Run Code Online (Sandbox Code Playgroud)

javascript iframe stripe-payments vue.js

5
推荐指数
1
解决办法
384
查看次数

Cypress:如何将测试应用程序的控制台错误打印到终端输出中?

当 cypress 在无头模式下运行时,不可能在浏览器中看到控制台错误。

我希望在终端中看到浏览器的错误:

控制台错误:GET http://localhost/main.js net::ERR_ABORTED 404(未找到)

CypressError:重试超时:cy.type() 失败,因为此元素不可见:

此元素 '' 不可见,因为其父元素 '' 具有 CSS 属性:'display: none'

相反我只得到:

CypressError:重试超时:cy.type() 失败,因为此元素不可见:

此元素 '' 不可见,因为其父元素 '' 具有 CSS 属性:'display: none'

在某些情况下,相同的测试在本地通过(浏览器和无头)但在 CI 中失败(即在 gitlab 管道中),只有原始终端输出而没有任何浏览器控制台错误,这使得很难判断为什么这些测试失败。

javascript cypress

5
推荐指数
1
解决办法
6583
查看次数

kubectl:如何在不明确指定 pod 名称的情况下显示 pod 日志?

我的 pod 有一个动态生成的 ID,附加到它们的名称后,例如 ie my-app-name-7b587cd75b-dscsr,每次部署都不同(下次可能是my-app-name-xcgv83bfsd-4kjsf)。

这使得使用某些命令非常麻烦,因为每次我需要查看日志时,我都必须首先列出所有 pod 并将更改后的名称复制粘贴到logs命令中:kubectl -n [namespace] logs my-app-name-7b587cd75b-dscsr.

有没有办法可以跳过使用 pod 名称或名称的一部分并在命令中执行类似kubectl -n [namespace] logs my-pod-name-~kubectl -n [namespace] logs service/my-pod-name类似的操作port-forward

我试图greplogs命令中注入以获取 pod 名称并logs在单个命令中运行,但是 Windows 上的 Cmder 尽管它很好,但似乎不支持$()kubectl -n [namespace] logs $(kubectl -n my-app-name get pod | grep my-app-name | sed 's/ .*//')

bash kubernetes cmder kubectl

5
推荐指数
1
解决办法
3076
查看次数

正则表达式-如何忽略匹配组的顺序?

我正在尝试为密码创建正则表达式验证,该验证应为:

  1. 超过6个字符
  2. 至少有一个az
  3. 至少有一个AZ
  4. 领先0-9

因此,换句话说,匹配将具有:

  1. 至少一个az,AZ,0-9
  2. 至少3个其他字符

我想出了:

((.*){3,}[a-z]{1,}[A-Z]{1,}[0-9]{1,})
Run Code Online (Sandbox Code Playgroud)

对我来说,这似乎很简单且合乎逻辑,但是有两件事出错了:

  1. 量词{3,}(.*)某种方式不起作用并破坏了整个正则表达式。刚开始时我遇到{6,}了,但是正则表达式会影响内部组中的量词,因此它需要[A-Z]{6,}而不是[A-Z]{1,}
  2. 当我删除{3,}正则表达式时,但仅在组顺序一致时才匹配-以便匹配aaBB11,但不匹配BBaa11

javascript regex html5

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

如何将PHP 2d数组传递给JS脚本?

假设我有一张桌子

[table fruits]
--------+------------+
ID [PK] | fruit      |
--------+------------+
1       | Orange     |
2       | Banana     |
3       | Coconut    |
Run Code Online (Sandbox Code Playgroud)

我需要在JS数组中保存ID和名称列表,例如:

var fkOptionList = [[1]['Orange'],[2]['Banana'],[3]['Coconut']]
Run Code Online (Sandbox Code Playgroud)

在PHP中我通过以下方式实现了:

        $fkOptionTableR = $fkOptionTableQ->result_array();

        $fkOption2dArray[] = array();
        $i = 0;
        $j = 0;

        foreach ($fkOptionTableR as $array) {
          foreach ($array as $row) {
          $fkOption2dArray[$i][$j] = $row;
            $j++;
          }
          $i++;
          $j = 0;
        }
Run Code Online (Sandbox Code Playgroud)

结果(根据var_dump):

array(3) { 
[0]=> array(2) { [0]=> string(1) "1" [1]=> string(6) "Orange" } 
[1]=> array(2) { [0]=> string(1) …
Run Code Online (Sandbox Code Playgroud)

javascript php arrays

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