es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede utilizar Find con CHtmlView y URLs que contienen anclas.

Estoy atascado/a en este caso.

Tengo mi propia clase derivada de CHtmlView y recientemente agregué soporte para Buscar. Lo hice de la siguiente manera:

void CChristianLifeMinistryEditorDlg::OnEditFind()
{
    m_pHtmlPreview->ExecWB(OLECMDID_FIND, OLECMDEXECOPT_PROMPTUSER, nullptr, nullptr);
}

Bajo la capa, el código hace lo siguiente:

HRESULT CChristianLifeMinistryHtmlView::ExecWB(OLECMDID cmdID, OLECMDEXECOPT cmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
{
    ASSERT(m_pBrowserApp != nullptr);

    const auto hr = m_pBrowserApp->ExecWB(cmdID, cmdexecopt, pvaIn, pvaOut);
    return hr;
}

Funciona bien. Pero solo si renderizo mis páginas de esta manera en el control del navegador:

if (m_pHtmlPreview != nullptr)
{
    CString strURL = strPreviewXML;
    if (iBookmarkId != -1)
        strURL.Format(_T("%%s#week%%d"), (LPCTSTR)strPreviewXML, iBookmarkId);

    m_pHtmlPreview->Navigate2(strPreviewXML, 0, nullptr);
    //m_pHtmlPreview->Navigate2(strURL, 0, nullptr);
}

En resumen, si navego al archivo XML en sí, entonces la función de búsqueda funciona. Pero si intento navegar al mismo archivo XML, pero con mi ancla, aunque se muestra en el lugar correcto en el control del navegador, la función de búsqueda no funcionará:

enter image description here

En el momento en que lo cambio de nuevo a la navegación:

m_pHtmlPreview->Navigate2(strPreviewXML, 0, nullptr);

Entonces la herramienta de búsqueda funcionará sin problemas. Pero esto significa que ya no puedo saltar a la parte correcta de la salida HTML transformada. Intenté hacer lo siguiente:

m_pHtmlPreview->Navigate2(strPreviewXML, 0, nullptr);
m_pHtmlPreview->Navigate2(strURL, 0, nullptr);

Pensé que si navegaba primero a la página y luego a la página con el ancla, la función de búsqueda funcionaría. Pero no tuve suerte. ¿Se puede hacer algo al respecto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema aquí está relacionado con la navegación a un archivo XML con un ancla. Es posible que esto no sea completamente compatible con el controlador del navegador web o la función Buscar. Una solución potencial podría ser en lugar de eso, renderizar la salida HTML transformada con el ancla directamente, en lugar de navegar hacia ella desde el archivo XML. De esta manera, la función Buscar debería seguir funcionando correctamente y aún puedes saltar a la parte correcta de la salida. Otra opción podría ser intentar usar un controlador de navegador o biblioteca diferente que pueda admitir la navegación a un archivo XML con un ancla y la función Buscar juntas.

Comments are closed.