두 개의 cefsharp 인스턴스 중 하나에서 RegisterJsObject를 사용하여 웹 사이트 URL을로드하려고합니다. URL은 웹 사이트 (chromeBrowser1)에서 수신되지만 창 (chromeBrowser2)은 업데이트되지 않습니다. 가능한 한 많이 스크립트를 문서화하여 이해하는 것이 더 쉽습니다. 나는 C#의 일반적인 지식을 가진 사람이 내 문제를 발견 할 것이라고 확신한다. 해결책을 찾기 위해 수 시간을 소비하지만 나는 할 수 없다.CefSharp에서 웹 사이트를로드 할 수 없습니다.
private void Form1_Load(object sender, EventArgs e)
{
CefSettings settings = new CefSettings();
Cef.Initialize(settings);
chromeBrowser2 = new ChromiumWebBrowser("http://google.com") // Initializate Browser 2 FIRST (This is the instance we want to update every X seconds using chromeBrowser2.Load("http://somewebsite.com"); later on)
{
Dock = DockStyle.Fill,
};
splitContainer1.Panel2.Controls.Add(chromeBrowser2);
chromeBrowser1 = new ChromiumWebBrowser("http://127.0.0.1/") // Initializate Browser 1 - Main website - source of data and more
{
Dock = DockStyle.Fill,
};
splitContainer1.Panel1.Controls.Add(chromeBrowser1);
chromeBrowser1.RegisterJsObject("callbackObj", new CallbackObjectForJs()); /// the link is obtained from here - See picture
}
public class CallbackObjectForJs
{
private readonly static BackgroundWorker backgroundWorker1 = new BackgroundWorker();
private readonly static ChromiumWebBrowser chromeBrowser2 = new ChromiumWebBrowser("http://facebook.com");
// IF I REMOVE ANY OF THE ABOVE I WILL RECEIVE THE FOLLOWING ERROR :
// Error CS0120 An object reference is required for the non-static field, method, or property 'Form1.backgroundWorker1'
// Error CS0120 An object reference is required for the non-static field, method, or property 'Form1.chromeBrowser2'
public void showMessage(string msg)
{
var sitelink = msg;
Console.WriteLine(sitelink); // WORKING - link is visible on console but chromeBrowser 2 is not update, still reads http://google.com
Console.WriteLine("Loading site using one of the options below"); // Can be seen on console +
// AT THIS POINT chromeBrowser2 SHOULD LOAD THE NEW URL ///
chromeBrowser2.Load(sitelink); // NOT WORKING
Console.WriteLine("Check Point 1");
backgroundWorker1.RunWorkerAsync(sitelink); // NOT WORKING
Console.WriteLine("Check Point 2");
}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) // NOT WORKING
{
Console.WriteLine("Background Worker"); // Nothing
string link = (string)e.Argument;
Console.WriteLine("Check Point 3");
chromeBrowser2.Load(link);
Console.WriteLine("Check Point 5");
Console.WriteLine(link);
Console.WriteLine("Check Point 6");
}
나는 무엇인가의 이유로 내가 선택한 옵션 중 어느 것도 트리거되지 않는다는 것을 이해합니다. 나는 그것들을 정적으로 만드는 것으로 숨길 수 있었던 Error CS0120 때문에 높은 추측을하고있다. 그러나 그것은 꽤 많이있다. 나는 아이디어가 없어. 검색 결과가 나에게이 사실을 알렸다.
Chromium 브라우저 개체에서 Address 속성을 설정해 보았습니까? –
솔직히 말해서 나는 그게 무슨 뜻인지 모르겠다. 기본 URL을 설정했다면 그랬습니다. 또한 전체 스크립트입니다. 내가 한 모든 것이 바로 거기에있다. – rgerculy
나는 지금 무슨 뜻인지 안다. ChromiumWebBrowser.Address 속성. 아니, 나는하지 않았다. 하지만 뭔가를 드러내는 지 알아보기 위해 지금 할 것입니다. – rgerculy