小编njp*_*njp的帖子

在涉及History API时,Google如何处理内容索引?

我说我有一个像这样的页面的部分(粗略的HTML给出一个想法):

www.mydomain.com/contact-us

<div class="regional-offices">

<div class="south-west">
  <a href="#south-west">South West</a>
  <div class="south-west-content">South west office address</div>
</div>

<div class="north-east">
  <a href="#north-east">North East</a>
  <div class="north-east-content">North east office address</div>
</div>
...
...
Run Code Online (Sandbox Code Playgroud)

目前,这些是一组手风琴,展开以显示链接点击时的内容.我想要做的是将它们视为单独的URL,以便它们可以被Google单独编入索引,当然它们只是一个页面的一部分.

我一直在研究历史API,并且可以看到我如何为每个部分创建唯一的URL这样做,但我的理解落在了谷歌或其他搜索引擎将如何处理这些链接,如果所需的信息已经是页面,而不是存储在自己的单独URL.

例如,第一步是将<a>标记更改为:

<a href="/contact-us/north-east">North East</a>
Run Code Online (Sandbox Code Playgroud)

然后我们可以使用JS preventDefault()直接转到URL,而是为用户提供扩展的手风琴,使用History API将页面向下滚动到手风琴和唯一的URL.如果我们直接访问URL或点击任何链接,这一切都很好.

但问题是,据我所知,Google抓取工具会尝试关注该链接并面对404,因为没有Javascript阻止访问URL中的资源.而且我也不希望有.

或者我需要一个独特的位置来保存手风琴的内容,这是可转位的,并且当折叠的手风琴与之交互时也会用AJAX拉入?

如果我没有说清楚,请道歉.

seo browser-history history.js html5-history

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

如何使用 g++ 编译和链接库 (SDL) 以便我拥有独立程序?

我在 Windows 7 上使用 MinGW。

简而言之,我想创建一个 Hello World SDL 程序(启动一个窗口或一些简单的东西),然后编译它,这样我就有了一个独立的程序,我可以分发它,而无需用户安装任何额外的东西(比如SDL.dll在Windows 文件夹)。

  • 我已经下载了 SDL 开发库,它目前位于c:\SDL.
  • 在我的项目文件夹中,我有test.cppSDL.dll

我不太确定接下来要做什么;我一开始以为我可以包含 SDL,然后只需在命令行中链接到 DLL,瞧,但也许我似乎需要先用我的程序编译 SDL 开发库?我唯一的目标是将我的 SDL 程序打包在一个文件夹中,我可以将其分发到其他 Windows 平台,而无需他们安装任何额外的东西——或者他们肯定需要在 Windows 文件夹中安装 SDL.dll?

编辑:进一步澄清 - 有人可以描述我将采取的步骤吗?我的意思是,希望分发其应用程序的开发人员会做什么?安装此类应用程序时,大多数游戏安装程序是否会将.dll文件放在文件Windows夹中?

来源(test.cpp):

#include <SDL/SDL.h>
#include <iostream>
using namespace std;

int main ()
{
  cout << "Hello World!";
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

文件夹:

test.cpp SDL.dll

命令行:

g++ test.cpp -lSDL

输出:

test.cpp:2:17: fatal error: SDL.h: No such file or directory compilation terminated

c++ sdl compilation

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

对于 Testcafe 无法在启用了 SIP 的 MacOS 映像上运行的情况,是否有任何解决方案?

目前,我们使用 Github Actions 来运行 Testcafe 套件,但问题是在macos-latest图像(10.15 Catalina)上运行 Safari 测试时出现以下错误:

UnableToAccessScreenRecordingAPIError: The find-window process cannot access the Screen Recording API.

这是因为 MacOS 映像没有默认授予该权限。显然你无法以编程方式处理这个问题,并且在 10.15 Catalina 中启用了一个名为 SIP 的功能,可以阻止你绕过它。这里讨论这个问题。

由于我们依赖 Github 提供图像,因此他们无法向我们提供此处讨论的非 SIP 图像。提供的解决方法没有任何帮助。

还有其他想法吗?

testing automation automated-tests e2e-testing testcafe

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

如何使用XPath选择页面上的所有链接

我想编写一个标识特定HTML页面上所有链接的函数.我的想法是使用XPath,通过使用路径,如//body//a[x]增加x来遍历页面上的第一,第二,第三个链接.

在Chrome中尝试此操作时,我会加载页面http://exoplanet.eu/,并在Chrome Developer Tools JS控制台中调用$x("//body//a[1]").我期待页面上的第一个链接,但这会返回多个锚元素的列表.调用$x("//body//a[2]")返回两个锚元素.呼叫$x("//body//a[3]")什么都不返回.

我希望[x]每次递增会在页面上逐一给出每个唯一的链接,但它们似乎是分组的.我怎样才能重写这条路径,以便逐一挑选每个锚标签?

xpath xpointer

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

在for循环中引用/解除引用向量元素

在下面的代码,我想保留number_list,迭代之后,因为.into_iter()for默认情况下使用会消耗.因此,我假设n: &i32并且我可以n通过解除引用获得价值.

fn main() {
    let number_list = vec![24, 34, 100, 65];
    let mut largest = number_list[0];

    for n in &number_list {
        if *n > largest {
            largest = *n;
        }
    }

    println!("{}", largest);
}
Run Code Online (Sandbox Code Playgroud)

有人向我透露,我们可以将其&n用作"模式":

fn main() {
    let number_list = vec![24, 34, 100, 65];
    let mut largest = number_list[0];

    for &n in &number_list {
        if n > largest {
            largest = n;
        }
    }

    println!("{}", largest); …
Run Code Online (Sandbox Code Playgroud)

syntax reference pattern-matching rust

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

如何在while(cin >> x)成语中包含'\n'?

我的理解是操作符>>返回左操作数,因此如果遇到错误或其他错误则cin >> x返回cin值.现在我的猜测是,因为跳过空白,所以不会存储字符.我想做的是这样的事情:falseEOFcin\n

int x;

while((cin >> x) and x != '\n')
    // do stuff
Run Code Online (Sandbox Code Playgroud)

因此,当cin在流中遇到换行符时,它会退出输入循环(正如通常所说的那样EOF).

c++

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

为什么Drupal Schema.org模块包含RDFa而不是微数据?

为什么Google结构化数据测试工具会显示Schema.org微数据的RDFa节点数据?例如,请参阅为Drupal Schema.org模块生成的此示例 ; 这是如何将Schema.org微数据插入页面的示例,但Drupal测试工具将微数据报告为rdfa-node.我认为Schema.org是微数据的子集,与RDFa不同?测试工具刚搞糊涂了吗?

drupal rdfa microdata schema.org

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

我怎样才能等到我的 AJAX 请求完成?

所以,我有一个在 DOM 完全加载时运行的 init 函数:

function init() 
{
    TerrainObj.load_terrain();
    TerrainObj.generate_display_layer(PlayerObj);
    GameObj.update();
    ScreenObj.draw_screen(TerrainObj);
    ScreenObj.update_screen(TerrainObj);
    mainloop();
}
Run Code Online (Sandbox Code Playgroud)

第一个方法,TerrainObj.load_terrain(),发出一个 AJAX 请求L:

load_terrain: function()
{
    var settings = {
        type: "GET",
        url: "data/map.txt",
        aysnc: false
    };

    $.ajax(settings).done(function(result) 
    {
        this.terrain = result.split("\n");
        for (var i = 0; i < this.terrain.length; i++)
        {
            this.terrain[i] = this.terrain[i].split("")
        }
        console.log(this.terrain);
    });
}
Run Code Online (Sandbox Code Playgroud)

问题是,在我们的init()函数中,后面的大多数方法都TerrainObj.load_terrain()需要存在TerrainObj.terrain array,但是在 AJAX 请求可以完成并填充该变量之前调用它们。当每个函数运行以检查订单时,我会发出一条小消息,我得到了这个:

Ran TerrainObj.load_terrain()
Ran ScreenObj.draw_screen()
Uncaught TypeError: Cannot read property '0' of undefined 
[Array[55], Array[55], …
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery

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