小编Phi*_*ipp的帖子

检测iframe何时开始加载新URL

如何检测页面上的iframe是否开始加载新页面?

我们的情况是:

  • 当iFrame内容开始变化时,我们需要显示"加载"动画并隐藏搜索框.
  • 我知道如何处理"iframe已完成加载"事件(隐藏动画)但不知道如何捕获最初的"开始更改"事件...

注意:我可以将jquery"click"挂钩附加到菜单上的链接,这将起作用.但是,在iframe内容中有许多交叉引用链接,"更改"事件也适用于它们!因此,当用户点击iframe内的链接通过javascript更改iframe src时,我们需要捕获事件- 因为我们还想显示加载动画并隐藏搜索框.

javascript iframe jquery events

40
推荐指数
2
解决办法
5万
查看次数

将JSX对象转换为HTML

我有一个react应用程序,它根据某些配置生成HTML输出.像这样:

export const getHtml = (config) => {
  const {classes, children} = config
  return (<div className={classes.join(' ')}>{children}</div>);
}
Run Code Online (Sandbox Code Playgroud)

在react应用程序内部,我可以轻松地显示生成的DOM对象,但我想将HTML代码保存到DB,将其显示在不同的页面上(无需再次加载反应/解析配置)

我找不到将JSX对象转换为纯HTML的方法......

javascript reactjs

14
推荐指数
2
解决办法
2万
查看次数

使用特定的php版本在phpunit中运行测试

我在我的Mac上安装了多个PHP版本,并希望针对特定的PHP版本(或针对​​多个版本)运行单元测试

这是我的php版本:

$ php --version
  Output: PHP 5.4.23 ...

$ /Applications/MAMP/bin/php/php5.2.17/bin/php --version
  Output: PHP 5.2.17 ...
Run Code Online (Sandbox Code Playgroud)

我的测试用例如下:

function test_php_version() {
    $actual = phpversion();
    $expected = '5.2.17';
    $this->assertEquals( $expected, $actual, 'Wrong PHP version!' );
}
Run Code Online (Sandbox Code Playgroud)

当我运行测试时,我收到了这个回复:

$ phpunit

  Wrong PHP version!
  Failed asserting that two strings are equal.
  --- Expected
  +++ Actual
  @@ @@
  -'5.2.17'
  +'5.4.24'

$ /Applications/MAMP/bin/php/php5.2.17/bin/php phpunit
  Error: Could not open input file: phpunit
Run Code Online (Sandbox Code Playgroud)

如何使用php 5.2.7版运行测试?


更新:

我发现PHPUnit不再运行php5.2.17了.所以我改变了我的要求,用php5.3.5运行单元测试,这是支持的.

php macos phpunit version

7
推荐指数
2
解决办法
4689
查看次数

“no-use-before-define”对声明的函数发出警告的目的是什么?

我对规则中的eslint警告感到困惑no-use-before-define

这个规则对于避免函数表达式引起的错误非常有意义,例如

// Case 1:
// Incorrect code; eslint warns me for good reason:

runMe() // Error: Cannot access 'runMe' before initialization

const runMe = () => { alert('expression, not hoisted') }
Run Code Online (Sandbox Code Playgroud)

然而,在声明函数时,在函数定义之前调用它是完全可以的(感谢 JS 提升机制)

// Case 2:
// Correct code; for what reason does eslint warns me about this?

runMe() // Works!

function runMe() { alert('definition, hoisted') }
Run Code Online (Sandbox Code Playgroud)

是否有原因,为什么eslint以相同的方式处理这两种情况(即它是否使脚本运行得更快/禁用提升/有一些其他影响)?

第二个问题:我可以将eslint配置为仅警告我第一种情况,但将声明性函数样式视为有效吗?

javascript eslint

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

配置 prism.js 以识别 &lt;pre&gt; 标签(不带 &lt;code&gt; 标签)

prism.js 文档指出

Prism 强制您使用正确的元素来标记代码:<code>。单独用于内联代码,或在<pre>代码块内 - https://prismjs.com/#features-full

我们正在使用文档管理系统,该系统不允许<pre>标签内包含任何 HTML 代码

  • <pre>some code</pre>- 格式正确,但没有语法高亮
  • <code>some code</code>- 语法高亮有效,但所有换行符/缩进都会被 CMS 删除
  • <pre><code>some code</code></pre><pre>&lt;code&gt;some code</pre>-由CMS转化为

有没有办法让 prism.js 添加语法突出显示到<pre>标签,如下所示:

<pre class="language-javascript">
if (test) {
  someCode();
}
</pre>
Run Code Online (Sandbox Code Playgroud)

也许有一个插件或 JS 配置可以告诉 prism.js 突出显示这些<pre>标签。

html javascript syntax-highlighting

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