我们希望保留#1和#2点,但由于事情混乱,我们必须迁移到新域.
我们不希望新域名因重复内容而受到处罚,我们希望它能自然地在Google上占据一席之地.
我们如何告诉Google我们的页面已移动?
AJAX是一个痛苦的屁股,因为它本质上意味着你必须编写两组相似的代码:一个用于启用JavaScript的浏览器和没有启用JavaScript的浏览器.
不仅如此,您还必须连接JavaScript事件以挂钩模型并显示结果.
如果所有这些都不够糟糕,您需要使用请求发送地址更改,否则用户将无法正确"单击"(如果混淆,请查看单击链接时地址栏发生的情况在GMail).
我们正在寻找具有远见和设计目标的东西,并考虑到所有这些问题.
性能和安全性也是明显的主要问题.
我们也喜欢基于配置的系统,您不必编写大量代码,只需将其放入易于阅读的配置格式即可.
这就像要求圣杯一样吗?
所以,假设我试图点击QWebView中的链接,这就是我所拥有的:
// extending QWebView
void MyWebView::click(const QString &selectorQuery)
{
QWebElement el = this->page()->mainFrame()->findFirstElement(selectorQuery);
if (!el)
return;
el.setFocus();
QMouseEvent pressEvent(QMouseEvent::MouseButtonPress, el.geometry().center(),
Qt::MouseButton::LeftButton, Qt::LeftButton, Qt::NoModifier);
QCoreApplication::sendEvent(this, &pressEvent);
QMouseEvent releaseEvent(QMouseEvent::MouseButtonRelease,
el.geometry().center(), Qt::MouseButton::LeftButton,
Qt::LeftButton, Qt::NoModifier);
QCoreApplication::sendEvent(this, &releaseEvent);
}
Run Code Online (Sandbox Code Playgroud)
你这么称呼它:
myWebView->click("a[href]"); // will click first link on page
myWebView->click("input[type=submit]"); // submits a form
Run Code Online (Sandbox Code Playgroud)
唯一的问题是:如果在窗口中看不到元素,则无法点击. 我的意思是,如果你必须向下滚动才能看到它,你就无法点击它.我想这与几何有关,因为元素没有显示在屏幕上,所以无法进行数学计算以单击它.
有什么想法来解决这个问题吗?也许某种方式使窗口表现像十亿十亿像素,但仍然看起来200x200?
我正在制作一个需要插件的基于任务的程序.任务需要具有易于编辑的属性,我认为这可以通过Qt的元对象编译器反射功能来完成(我可能是错的,但我应该能够将它粘在QtPropertyBrowser中?)
所以这是基础:
class Task : public QObject
{
Q_OBJECT
public:
explicit Task(QObject *parent = 0) : QObject(parent){}
virtual void run() = 0;
signals:
void taskFinished(bool success = true);
}
Run Code Online (Sandbox Code Playgroud)
然后插件可能有这个任务:
class PrinterTask : public Task
{
Q_OBJECT
public:
explicit PrinterTask(QObject *parent = 0) : Task(parent) {}
void run()
{
Printer::getInstance()->Print(this->getData()); // fictional
emit taskFinished(true);
}
inline const QString &getData() const;
inline void setData(QString data);
Q_PROPERTY(QString data READ getData WRITE setData) // for reflection
}
Run Code Online (Sandbox Code Playgroud)
简而言之,这就是我想要做的事情:
// load plugin
// find …Run Code Online (Sandbox Code Playgroud)